Windows 7 Ultimate の FOR コマンド内で他のコマンドを実行すると問題が発生します。for コマンドはバッチ ファイルの一部であり、別のコマンドの出力を解析する必要があります。
通常これ:
for /f %%a IN ('tasklist') DO echo %%a
コマンド「Tasklist」を実行し、その結果をエコー経由で出力する必要があります。しかし、私はいつも「コマンドが見つかりません」と出ます。
forloopの外でコマンドを実行しようとしましたが、うまくいきました。また、for内で多くの外部コマンドを実行しようとしましたが、すべてのコマンドは「コマンドが見つかりません」と言いました。
この投稿の例も試しました:
バッチ: for ループで引用符を付けてコマンドを実行し、パイピングして検索する
きっと
- コマンドが存在すること
- 私はそれを読んで実行する権利を持っていること
- 私のユーザーが管理者グループに属していること
- 「管理者として実行」でコマンドを実行すること
しかし、このPCでは何も機能していません。Windows 7 Ultimate を実行している別の PC でも同じコマンドが機能します。
それで、すべてのコマンドが見つからないPCで間違っている可能性があるという考えはありますか?
コマンド「ls」で試したときのコンソール出力の例を次に示します。ls.exe は gun4win プロジェクトの実行可能ファイルで、バッチ ファイルが実行されているのと同じフォルダーにあります。ウィンドウはドイツ語なので、エラー出力もドイツ語です。
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 を変更しErweiterte Systemeigenschaften->Erweitert->Umgebungsvariaben->Systemvariablen" to "C:\Windows\system32\cmd.exe
たところ、問題は解決しました。
@foxidrive と @jeb に感謝