Batch file Windows批处理:使用FOR/F--“执行命令”;“未找到命令”;
在Windows 7 Ultimate上执行FOR命令中的其他命令时出现问题。 for命令是批处理文件的一部分,应该解析另一个命令的输出 通常情况下:Batch file Windows批处理:使用FOR/F--“执行命令”;“未找到命令”;,batch-file,cmd,command-execution,Batch File,Cmd,Command Execution,在Windows 7 Ultimate上执行FOR命令中的其他命令时出现问题。 for命令是批处理文件的一部分,应该解析另一个命令的输出 通常情况下: for /f %%a IN ('tasklist') DO echo %%a 应执行命令“Tasklist”,并通过echo输出其结果。 但我总是得到“找不到命令” 我试着在forloop之外执行这个命令,它成功了。 我还尝试在for中执行许多外部命令,但每个命令都说“找不到命令” 我还尝试了这篇文章的例子: 我敢肯定 命令是否存在 我已经
for /f %%a IN ('tasklist') DO echo %%a
应执行命令“Tasklist”,并通过echo输出其结果。
但我总是得到“找不到命令”
我试着在forloop之外执行这个命令,它成功了。
我还尝试在for中执行许多外部命令,但每个命令都说“找不到命令”
我还尝试了这篇文章的例子:
我敢肯定
- 命令是否存在
- 我已经阅读并执行了它的权利
- 我的用户在管理员组中
- 使用“以管理员身份运行”运行命令
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
的值错误
我将Erweiterte Systemeigenschaften->Erweitert->Umgebungsvariaben->Systemvariablen”中的ComSpec更改为“C:\Windows\system32\cmd.exe
,问题就解决了
多亏了@foxidrive和@jeb如果您对/F使用
并得到错误“某物”未被识别为内部或外部命令、可操作程序或批处理文件
,对于每个程序,甚至是内部命令,最常见的原因是错误的ComSpec变量
您可以使用set ComSpec
检查变量,它应该是C:\Windows\System32\cmd.exe
更改命令行上的变量没有帮助,原因在中描述
如果变量包含不同的值,则应在下更正
对于德国系统:
Erweitert系统特征值schaften->Erweitert->Umgebungsvariaben->Systemvariablen
对于英语系统:
Win Key+Pause Key->Advanced System Settings->Environment Variables->System Variables
对于/F
行为存在第二种可能的奇怪原因
如果可以在注册表中启用自动运行功能,…\Command Processor\AutoRun
,有关详细信息,请参阅cmd/?
自动运行功能可以在每次启动新cmd.exe实例时启动批处理文件。
这对于显示打开新cmd窗口或始终更改为choosen目录时的某些数据非常有用。
但此批处理也将在FOR/F的中执行,通常会导致意外结果。
管道也会启动新的cmd实例,但会抑制自动运行脚本脚本是否使用名为path
?…或pathext
的变量?您可以尝试在目录%SystemRoot%\System32`中执行脚本,该目录下的
tasklist`命令位于…@JosefZ“command not found”似乎不是任何标准的Windows cmd错误消息。
如果错误消息被错误引用,则comspec
变量也可能是fubar,如果命令在脚本中运行,但只在for命令中失败-因为comspec用于为for中的每个命令调用cmd.exe。如上所述,更改comspec将被缓存。在Erweiterte Systemeigenschaften->Erweitert->Umgebungsvariaben->Systemvariablen