2016-03-08 66 views
6

我在Windows 7旗舰版的FOR命令中执行其他命令时遇到问题。 for-command是批处理文件的一部分,应解析另一个命令的输出。Windows批处理:使用FOR/F执行命令 - “找不到命令”

一般这样:

for /f %%a IN ('tasklist') DO echo %%a 

应执行命令“任务列表”和输出经由回声其结果。 但我总是得到“命令未找到”。

我试图执行forloop以外的命令,它的工作原理。 我也尝试在for中执行大量的外部命令,但是每个命令都显示“找不到命令”。

我也试过这个帖子的例子:

Batch: Execute command with quotes in for loop with piping to find

我真的确信

  • 该命令存在
  • 我已阅读并执行它的权利
  • 我的用户在管理员组
  • 我跑t他以“以管理员身份运行”命令

但是这台电脑没有任何工作。 相同的命令可以在另一台PC上运行,这也是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. 

FINAL编辑: 问题是该系统envoirement变量 “COMSPEC” 为错误的值。

我将ComSpec的“Erweiterte Systemeigenschaften-> Erweitert-> Umgebungsvariaben-> Systemvariablen”更改为“C:\ Windows \ system32 \ cmd.exe”,问题解决了。

感谢@foxidrive和@jeb

+3

贵得离谱pt使用名称为'path'的变量? – foxidrive

+2

...或“pathext”?你可以尝试执行'%SystemRoot%\ System32 \'目录中的脚本,其中'tasklist'命令位于... – aschipfl

+0

这不适用于命令所在的位置。我甚至尝试了一个命令,它放置在像我的批处理文件一样的文件夹中。它说“一切都找不到”。但我可以执行for的所有外部命令。只有在找不到任何指令 – Radon8472

回答

4

如果使用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 strange behaviour

描述如果变量包含不同的值,你应该在

纠正这种对于德语系统:
Erweiterte Systemeigenschaften->Erweitert->Umgebungsvariaben->Systemvariablen

对于英文系统:
Win Key+Pause Key->Advanced System Settings->Environment Variables->System Variables