我有一个包含菜单和命令列表的 .txt 文件。我想要做的是逐步运行这个 .txt 文件的每一行,检查数字,然后从以前的值增加它。因此,这是该文件的示例部分:
menu1=do something
cmd1=cd \\somewhere
menu2=do something
cmd2=cd \\somewhere
menu3=do something
cmd3=cd \\somewhere
menu1=do something
cmd1=cd \\somewhere
menu2=do something
cmd2=cd \\somewhere
menu3=do something
cmd3=cd \\somewhere
请注意菜单编号如何从 1 计数到 3,然后在中途再次恢复为 1。
不幸的是,他们需要像下面这样继续增加。
menu1=do something
cmd1=cd \\somewhere
menu2=do something
cmd2=cd \\somewhere
menu3=do something
cmd3=cd \\somewhere
menu4=do something
cmd4=cd \\somewhere
menu5=do something
cmd5=cd \\somewhere
menu6=do something
cmd6=cd \\somewhere
有没有办法使用批处理文件来实现这一点?我对此并不陌生,但解析字符串、获取数字、将其与变量进行比较,然后替换它被证明是困难的。你能指出我正确的方向吗?谢谢你。
解决方案
setlocal DisableDelayedExpansion
set menuNr=1
(
for /F "tokens=1,2* delims==" %%a in (MyFile.txt) do (
set "prefix=%%a"
set "rest=%%b"
call :processLine
)
)
move /y temp.txt MyFile.txt
exit /b
:processLine
setlocal EnableDelayedExpansion
if "!prefix:~0,4!"=="menu" (
set "prefix=menu!menuNr!"
)
if "!prefix:~0,3!"=="cmd" (
set "prefix=cmd!menuNr!"
set /a menuNr+=1
)
echo !prefix!=!rest! >> temp.txt
(
endlocal
set "menuNr=%menuNr%"
exit /b
)