【发布时间】:2022-01-08 14:59:00
【问题描述】:
我的程序有问题,我不知道如何让它检测到文件NewFile(%i%) 存在。
for /l %%i in (1, 1, 100) do (
if EXIST NewFile(%i%).txt (
echo "New file"> NewFile(%%i).txt
goto EndLoop
)
if EXIST NewFile.txt(
echo "New file"> NewFile(%%i).txt
goto EndLoop
) else (
echo "New file"> NewFile.txt
goto EndLoop
)
)
它说“)此时出乎意料。”
我该如何解决这个问题?
【问题讨论】:
-
那行不通。所有
%包围的变量都在循环运行之前进行评估,因此它们不会在每次循环运行时更新。您需要研究 DOS 批处理文件中的delayedexpansion,并在循环中使用!而不是%。更多信息:ss64.com/nt/delayedexpansion.html -
@Ruslan。当代码块内的变量为
set时,需要delayedexpansion。变化的变量需要在执行时进行评估,因此我们启用它,这里的循环内没有设置任何内容,所以这里根本不是问题。 -
不要将
for元变量与普通环境变量混淆,因此%i%必须阅读%%i...
标签: for-loop if-statement batch-file