【发布时间】:2016-04-09 12:04:42
【问题描述】:
我有这个批处理脚本,它应该枚举目录中的所有文件:
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET /A cn=0
SET cwd=%~dp0
ECHO Files:
FOR %%I IN (%cwd%\*) DO (
SET /A cn=cn+1
ECHO !cn!
IF "%%I"=="buthow" ()
ECHO %%~nxI
)
EXIT /B 0
假设我们在文件夹中有文档d1.txt、d2.txt、d3.txt。上面的代码按预期工作,但是当我删除什么都不做的 if 语句(?)时,我得到以下输出:
1
d1.txt
2
cnd2.txt
3
cnd3.txt
这是为什么呢?
【问题讨论】:
-
代码有两个 ECHO命令:
ECHO !cn!应该显示cn变量的值,ECHO %%~nxI应该显示每个命令的名称和扩展名文件,因此您显示的输出证明代码“按预期工作”(没有奇怪的if命令)。 -
你还能再马虎点吗!?发布的代码“按预期工作”?!?!我认为不会,因为您的 IF 语句存在致命的语法错误。但是没有 IF 的输出完全是应该的。
-
没有。预期的输出应该是
d2.txt而不是cnd2.txt
标签: batch-file for-loop set