bat命令实现动态修改

这篇博客记录了如何利用bat批处理脚本动态修改lua文件中的数组内容。通过创建config.bat,当拖拽配置文件kChannel.txt到该bat文件上时,脚本将读取配置文件内容并更新到test.lua的Config.configs表中。实现过程中涉及bat获取文件路径、字符串处理和循环中的变量延迟设置等技巧。

针对bat相关命令 ,不一一陈列了,就将自己做的一个事情时遇到的问题,以及解决问题时候思路过程做一记录,以便后续查找。

前提:
有一个这样的需求:有一段脚本代码,代码中有一个数组,你现在要在打包之前,动态的往代码中的数组中添加一些值,如:
准备修改的文件test.lua

     Config = {};
          Config.ONE = "0";
          Config.TWO = "1";

          Config.configs = {
               "315",
          };

我们现在做的事情,就是写一个配置文件,没在打包之前,调用这个配置文件,然后动态的将配置文件中的值写入到Config.configs这个table中去。

假设给一个配置文件kChannel.txt

 600
 457
 879

里面就三个值,最后达成的效果如下:

Config = {};
          Config.ONE = "0";
          Config.TWO = "1";

          Config.configs = {
               "315",
               "600",
               "457",
               "879",
          };

执行过程:
我们打算建一个bat文件:config.bat,然后将上述kChannel.txt配置文件拖到config.bat上,然后达到动态修改test.lua的效果

实现过程:
1.首先解决 获取bat拖上文件的路径 : “%~f1”标识文件的路径;”%~f0”标识bat批处理文件的路径;
2.其次涉及到字符串的处理,而且在循环中涉及到变量处理:
1)、在循环中要对变量再编辑的话,要启用延迟变量的设置,用setlocal命令,具体的你输入setlocal /?看帮助,它一般是跟 endlocal配对使用,要不然循环数据多的时候,会出错
2)、用for读取文件的时候,最好不要直接用文件名,而要用more命令来读取。否则在列表文件名的中间有空格的时候,好像会出错。
3)、在使用使用延迟环境变量的范围内操作某个变量的话,要用 !变量名!,而不是%变量名%,for自身的变量%%a等例外。
3.见最终核心程序:

@echo off
setlocal enabledelayedexpansion
set "fn=test.lua"
set "aim=Config.configs = {"

for /F "delims=: tokens=1*" %%i in ('more %~f1') do (
     set kChannel=!kChannel!"%%i",
)
(for /f "delims=: tokens=1*" %%i in ('findstr /n .* "%fn%"') do (
     if "%aim%" equ "%%j" (echo,%aim%&echo,%kChannel%)else echo;%%j
))>temp.txt

endlocal

that’s all

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值