我有一个文本文件,每行一个字符串(总共只有几行)。需要搜索此文件并存储每个字符串。该脚本最终将提示用户选择一个存储的字符串(如果文件中存在多个字符串/行),但for循环在我不想要的时候迭代额外的时间。 / p>
我使用计数器来检查迭代次数,我还读到它可能是NL CR正则表达式问题,但是for for file-set中的finstr /v /r /c:"^$"
就像在这篇文章Batch file for loop appears to be running one extra time/iteration对我不起作用(但我可能不能正确理解它)。
" pref" term是因为字符串最终将用作同一文件夹中文件的前缀...
@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 :(得分:1)
您只需要像这样更改增量结构。 (在从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!