我在Windows 7 Ultimate上执行FOR命令时遇到问题,无法执行其他命令。 该FOR命令是批处理文件的一部分,应解析另一个命令的输出。
通常情况下,如下所示:
for /f %%a IN ('tasklist') DO echo %%a
应该执行命令"Tasklist",并通过echo输出其结果。但我总是得到“找不到命令”的提示。
我尝试在for循环之外执行该命令,它可以正常工作。我还尝试在for循环中执行许多外部命令,但每个命令都会显示“找不到命令”的提示。
我还尝试了这篇文章中的示例:
Batch: Execute command with quotes in for loop with piping to find
我确定:
- 命令存在
- 我有读取和执行权限
- 我的用户在管理员组中
- 我使用“以管理员身份运行”来运行命令
但在这台电脑上没有任何命令可以正常工作。相同的命令在另一台运行Windows 7 Ultimate的电脑上可以正常工作。
那么,有人知道在所有命令都无法找到的电脑上出了什么问题吗?
以下是当我使用“ls”命令时控制台输出的示例。ls.exe是gun4win项目的可执行文件,位于与我的批处理文件运行的相同文件夹中。Windows是德语版,因此错误输出也是德语。
C:\ test>test_for.bat
C:\test>rem --- test a command stand-alone ---
C:\test>ls
ls.exe test_for.bat
C:\test>rem --- test same command in a FOR-Loop ---
C:\test>for /F "delims=" %a in ('ls') do echo FOR-OUTPUT: %a
Der Befehl "ls" ist entweder falsch geschrieben oder konnte nicht gefunden
werden.
最终编辑:
问题出在系统环境变量ComSpec
的值不正确。
我在高级系统设置->高级->环境变量->系统变量
中将ComSpec更改为"C:\Windows\system32\cmd.exe",问题得以解决。
感谢@foxidrive和@jeb的帮助。
path
的变量? - foxidrive%SystemRoot%\System32\
目录下执行脚本,因为tasklist
命令就在那里,或者尝试添加路径到path
或pathext
环境变量中。 - aschipflcomspec
变量也可能出错,如果脚本内运行的命令只在 for 命令中失败,则 comspec 会用于为 for 中的每个命令调用 cmd.exe。 - foxidrive