バッチ スクリプト (Windows コマンド ライン) を作成していたところ、スペースを含むパスを引用すると奇妙な動作が発生することに気付きました。
スペースを含む場所 (例: c:\Program Files) を参照するには、引用符を使用する必要があります ("c:\Program Files")。たとえば、MSTest.exe を呼び出すには、次を使用します。
"c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"
その場所で他のプログラムも参照する場合は、次のようにします。
set VSDIR="c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
%VSDIR%\MSTest.exe
MSTest.exe への展開された呼び出しは次のようになります。
"c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"\MSTest.exe
これは期待どおりに機能します。引用符が削除され、システムが MSTest.exe を読み込みます。偉大な。ここで、devenv.com に対して同じことを行うと、次のようになります。
set VSDIR="c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
%VSDIR%\devenv.com
システムは黙って何もしません。出力は標準出力またはエラーに送信されず、エラー レベルはゼロのままです。devenv.com が通常どおりプロセスをロードした後に引用符を移動します。
なぜ私がこの振る舞いを見るのか誰にも分かりますか? devenv.com がリアル モードで実行されているためですか、それともプロセス自体に関するものですか?