Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在最后一次for循环迭代中避免空值?_Batch File_For Loop_Cmd - Fatal编程技术网

Batch file 在最后一次for循环迭代中避免空值?

Batch file 在最后一次for循环迭代中避免空值?,batch-file,for-loop,cmd,Batch File,For Loop,Cmd,我有一个文本文件,每行一个字符串(总共只有几行)。需要搜索此文件并存储每个字符串。脚本最终会提示用户选择一个存储的字符串(如果文件中存在多个字符串/行),但for循环会在我不希望的情况下额外迭代一次 我正在使用计数器检查迭代次数,我还了解到这可能是NL CR正则表达式的问题,但是像本文中那样的for文件集中的finstr/v/r/c:“^$”对我不起作用(但我可能没有正确理解它) “pref”一词是因为字符串最终将用作同一文件夹中文件的前缀 @echo off setlocal enablede

我有一个文本文件,每行一个字符串(总共只有几行)。需要搜索此文件并存储每个字符串。脚本最终会提示用户选择一个存储的字符串(如果文件中存在多个字符串/行),但for循环会在我不希望的情况下额外迭代一次

我正在使用计数器检查迭代次数,我还了解到这可能是NL CR正则表达式的问题,但是像本文中那样的for文件集中的
finstr/v/r/c:“^$”
对我不起作用(但我可能没有正确理解它)

“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已关闭。
显然不需要。

您只需要像这样更改增量结构。(在从0开始的每行之前设置)

@Echo关闭
Setlocal EnableDelayedExpansion
设置“i=0”
对于/F“UseBackQ Delims=“%A In”(“sys.txt”)Do(
设置/A“i+=1”
设置“pref!i!=%%A”
Echo(pref!i!)
Echo(i的最后一个值=%i%
对于(1,1,%i%)中的/L%%A,执行回显(!pref%%A!

set/ax=-1在
for
循环之后立即…@somethingsdark Nice。没有想到。但是我在使用rename命令之前遇到了一个问题,它在其中两次向组的第一个文件添加前缀。所以我希望能更好地理解这一点。你有一个Base0/Base1不匹配错误。你应该从set/ax=0(当您有零个字符串时)并在分配下一个字符串之前递增
set/ax+=1
echo pref!x!
足以打印
pref1
等,绝对不需要
%^%
…使用
调用echo%%pref!x!%%
for%%x in(!x!)do echo!pref%%x!
。有关详细信息,请参阅。
for
循环的
的结束符在哪里?@lit:这是
echo(pref!i!)
行中的最后一个参数!我认为Compo是这样写的(在
echo
命令中添加不需要的左参数)出于迷惑人的目的…
:/
@lit,由于我所有的
Echo
命令后面都紧跟着“不需要”的左括号,因此它应该足以反驳肯定不是故意的迷惑语句。(事实上,如果我不必在android键盘上选择不同的页面来输入
=
,我会像往常一样在这三个地方使用它)。