我正在尝试跳过行以便在此 findstr 命令下方的第二行中获取var5 :
'findstr /x /v /c:"Ship sunk" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\!FileName5!.clg" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\!FileName5!.cfg"')
重复一遍,我想从 findstr (上面)找到它的字符串的第二行中获取var5 。
所以我决定在 for 循环中为跳过创建一个变量。我称之为“ skipnumber5 ”。但是,使用此变量会跳过我所说的行数,但不会重复循环。因此,如果我设置 skipnumber5=12,它的作用与“skip=12”不同。它正确地执行了第一个循环,但随后它一次又一次地重复第一个循环结果。使用 skip=12 确实可以在循环中正常工作,但是我需要更改跳过值才能在var5更改时获取它。
代码:设置 /a skipnumber5=0
:part5
set /a skipnumber5+=12
set /a maxlines5+=1
set /a linecount5=0
for /F "delims=" %%x in ('findstr /c:"Ship sunk" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\*.clg" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\Log_*.cfg"') do (
set /a linecount5+=1
set FileName5=
set FileName5=%%~nx
if !linecount5! GEQ %maxlines5% goto part5a
)
:part5a
set /a maxlines5a+=1
set /a linecount5a=0
for /f "skip=%skipnumber5% tokens=2 delims==" %%E in ('findstr /x /v /c:"Ship sunk" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\!FileName5!.clg" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\!FileName5!.cfg"') do (
set /a linecount5a+=1
set var5=
set var5=!var5!%%E
set /a skipnumber5+=12
if !linecount5a! GEQ %maxlines5a% (goto part5b)
)
在 for 循环选项中,带有变量skipnumber5的行是:
for /f "skip=%skipnumber5% tokens=2 delims==" %%E in
问题是带有变量skipnumber5的skip停留在同一个文件中,正在跳过。但是,如果您阅读代码,它应该更改为下一个Filename5,跳过。如果 skip=1 或任何整数,这就是它的工作原理。
那么为什么变量skipnumber5使skip= 以这种方式运行呢?