Rad*_*472 7 cmd batch-file command-execution
我在Windows 7旗舰版的FOR-command中执行其他命令时遇到问题.for-command是批处理文件的一部分,应该解析另一个命令的输出.
通常这个:
for /f %%a IN ('tasklist') DO echo %%a
Run Code Online (Sandbox Code Playgroud)
应执行命令"Tasklist"并通过echo输出其结果.但我总是得到"命令未找到".
我试图在forloop之外执行命令,它可以工作.我也尝试在for中执行大量外部命令,但每个命令都说"命令未找到".
我也试过这篇文章的例子:
我确定
但这台电脑没有任何作用.相同的命令可以在另一台运行Windows 7终极版的PC上运行.
那么有没有人会在没有找到所有命令的电脑上出错?
这是我使用命令"ls"尝试时我的控制台输出的示例.ls.exe是gun4win项目中的可执行文件,它位于运行批处理文件的同一文件夹中.窗口是德语,所以错误输出也是德语.
C:\测试> 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.
Run Code Online (Sandbox Code Playgroud)
最终编辑:
问题是系统envoirement变量的错误值ComSpec
.
我改变了ComSpec,Erweiterte Systemeigenschaften->Erweitert->Umgebungsvariaben->Systemvariablen" to "C:\Windows\system32\cmd.exe
问题解决了.
感谢@foxidrive和@jeb
如果您对每个程序,甚至是内部命令都使用FOR /F
并得到错误'something' is not recognized as an internal or external command, operable program or batch file
,最常见的原因是错误的 ComSpec 变量。
您可以使用 来检查变量set ComSpec
,它应该是C:\Windows\System32\cmd.exe
。
在命令行上更改变量无济于事,原因在DosTips: ComSpec 奇怪的行为中描述
如果变量包含不同的值,您应该在下面更正
对于德国系统:
Erweiterte Systemeigenschaften->Erweitert->Umgebungsvariaben->Systemvariablen
对于英语系统:
Win Key+Pause Key->Advanced System Settings->Environment Variables->System Variables
存在导致奇怪FOR /F
行为的第二个可能原因
如果可以在注册表中启用 AutoRun 功能...\Command Processor\AutoRun
,有关详细信息,请参阅cmd /?
。
AutoRun 功能可以在每次启动新的 cmd.exe 实例时启动一个批处理文件。
这对 ex 很有用。显示有关打开新 cmd 窗口或始终更改到所选目录的一些数据。
但是这个批处理也会在里面执行FOR /F
,通常会导致意想不到的结果。
管道也启动新的 cmd 实例,但禁止自动运行脚本