我在批处理脚本中遇到for循环问题。 当我尝试:
for /f "delims=;" %g in ('dir') do echo %g%
我看到了这个
'dir' is not recognized as an internal or external command,
operable program or batch file.
我是否想念一些人?为什么Windows命令不起作用?
答案 0 :(得分:1)
dir
迭代for /f
输出会出现各种问题。而只是使用
for %g in (*) do @echo %g
答案 1 :(得分:1)
在您的问题中,您声明echo %g%
哪个错误(将逐字逐句地返回%
。)
当命令直接输入命令提示符时,请使用:
for /f "delims=" %g in ('dir /B') do echo %g
当您在批处理文件中使用for
时,您的变量需要加倍%
:
for /f "delims=" %%g in ('dir /B') do echo %%g
选项delims=;
没有意义,因为dir
没有给出以分号分隔的列表,因此我停用了delims
。
/B
开关将dir
输出更改为裸格式(无页眉广告页脚,仅文件和目录。)
答案 2 :(得分:0)
看起来%comspec%
变量已被隐藏或更改,但无法找到cmd.exe
测试此项以查看错误,并在工作机器上删除第2行以使其正常工作。
@echo off
set comspec=c:\aaa
for /f "delims=;" %%g in ('dir') do echo %%g
pause
非常有趣的是cmd.exe的路径被缓存 下面的两个脚本是相同的,仅更改了命令的顺序
此批处理文件将因两个for
命令
@echo off
set comspec=c:\aaa
for /f "delims=;" %%g in ('dir') do echo %%g
pause
set "comspec=%windir%\System32\cmd.exe"
for /f "delims=;" %%g in ('dir') do echo %%g
pause
此批处理文件将与for
命令一起使用。
@echo off
set "comspec=%windir%\System32\cmd.exe"
for /f "delims=;" %%g in ('dir') do echo %%g
pause
set comspec=c:\aaa
for /f "delims=;" %%g in ('dir') do echo %%g
pause