2
我有一個.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
有沒有一種方法可以使用批處理文件來實現這一點?我對此很陌生,但是解析字符串,獲取數字,將它與變量進行比較,然後替換它就證明是困難的。你能指出我正確的方向嗎?謝謝。
SOLUTIONsetlocal 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
)
該問題的優秀分析。注意:我會在結尾放一個:end和一個暫停,以使批處理文件在運行後可讀。 – djangofan
這真的是一個很好的分析。我做了一些小改動,將改變寫入temp .txt文件並重寫原始文件,但除此之外它是驚人的。謝謝! – Stoating
@Zachary Stade - 你在for循環中更好地重定向它,它更快,而且如果'temp.txt'已經存在,你沒有問題。我將它添加到我的示例中 – jeb