web-dev-qa-db-ja.com

コマンドプロンプトエラー 'C:\ Program'は、内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません

次のバッチコマンドを実行しようとしています。コマンドはIDEから抽出されたため、動作することが確認されています。下記のエラーを取得します。

二重引用符でいくつかのバリエーションを試しましたが、うまくいきませんでした。 PowerShellでも同じメッセージがあります。

C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\bin\icc430.exe F:\CP001\source\Meter\Main.c -D Hardware_P20E -D Calibration_code -D _Optical -D _Configuration_TS0382 -o F:\CP001\Temp\C20EO\Obj\ --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --debug -D__MSP430F425 -e --double=32 --dlib_config C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\lib\dlib\dl430fn.h -Ol --multiplier=16 --segment __data16=DATA16 --segment __data20=DATA20

Command Prompt

更新:

引用符でソリューションを試すと、コンパイラが何らかの方法で混乱します

enter image description here

36
Rohan Sharma

ディレクトリにスペースが含まれる場合は、引用符で囲みます。これには、引数だけでなく、呼び出しているプログラムが含まれます

"C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\bin\icc430.exe" "F:\CP001\source\Meter\Main.c" -D Hardware_P20E -D Calibration_code -D _Optical -D _Configuration_TS0382 -o "F:\CP001\Temp\C20EO\Obj\" --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --debug -D__MSP430F425 -e --double=32 --dlib_config "C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\lib\dlib\dl430fn.h" -Ol --multiplier=16 --segment __data16=DATA16 --segment __data20=DATA20
43
James Hunt

これは、コマンドラインに非常に敏感なプログラムで時々発生するようですが、1つのオプションは、Windowsパスの代わりにDOSパスを使用することです。これは、C:\Program Files\C:\PROGRA~1\に解決され、一般に間隔に関する問題を回避することを意味します。

短いパスを取得するには、短いパスをエコーするクイックバッチファイルを作成できます。

@ECHO OFF
echo %~s1

その後、次のように呼び出されます。

C:\>shortPath.bat "C:\Program Files"
C:\PROGRA~1
10
rjzii

Program Filesを二重引用符で囲む必要があるだけで、コマンドの残りの部分は引用符を必要としません。

C:\"Program Files"\IAR Systems\Embedded Workbench 7.0\430\bin\icc430.exe F:\CP00 .....
9
DheerajS

RスクリプトのWindowsコマンドラインRscript.exeを使用して、パス内のスペースに非常に敏感な同様の問題が発生しました。解決策は、windows substコマンドを使用してバイナリフォルダーへの仮想パスを作成することでした。

次は失敗します:"C:\Program Files\R\R-3.4.0\bin\Rscript.exe"

以下を実行すると成功します。

subst Z: "C:\Program Files\R\R-3.4.0"
Z:\bin\Rscript.exe

上記のソリューションが機能しなかった理由は、明らかに、スペースと混同されているWindowsコマンドラインではなく、作業ディレクトリ(スペースが含まれている)からのRscript.exe実行可能ファイル自体の内部パス解決に関係しています。したがって、コマンドラインで~または"を使用して問題を解決するのは無意味です。実行可能ファイルは、スペースのないパス内で呼び出す必要があります。

0
Soren