2016-03-08 418 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