>我有一个文本文件,每行一个字符串(总共只有几行(。需要搜索此文件并存储每个字符串。该脚本最终会提示用户选择一个存储的字符串(如果文件中存在多个字符串/行(,但是 for 循环在我不希望它时迭代额外的时间。
我正在使用计数器来检查迭代次数,我还读到这可能是 NL CR 正则表达式问题,但是 for 文件中的finstr /v /r /c:"^$"
,如这篇文章中的批处理文件 for 循环似乎正在运行一个额外的时间/迭代对我不起作用(但我可能理解不正确(。
"pref"一词是因为字符串最终将用作同一文件夹中文件的前缀......
@echo off
setlocal enabledelayedexpansion
set /a x=1
for /f %%a in (sys.txt) do (
set pref!x!=%%a && echo %^%pref!X!%^% && set /a x+=1
)
echo last value of x = !x!
for /L %%a in (1,1,!x!) do (
echo !pref%%a!
)
REM The rest would be to prompt user to choose one (if multiple) and
REM then use choice as a prefix with a ren %%a %prefX%%%a
如果"sys.txt"包含三行分别带有字符串 A、B、C 的行,那么我目前得到的输出是:
pref1
pref2
pref3
last value of x = 4
A
B
C
ECHO is off.
显然,ECHO is off.
是不希望的。
你只需要像这样改变你的增量结构。(将其设置在从 0 为基数的每行之前(
@Echo Off
Setlocal EnableDelayedExpansion
Set "i=0"
For /F "UseBackQ Delims=" %%A In ("sys.txt") Do (
Set/A "i+=1"
Set "pref!i!=%%A"
Echo(pref!i!)
Echo(last value of i = %i%
For /L %%A in (1,1,%i%) Do Echo(!pref%%A!