順番に実行したいバッチファイルがたくさんあります。そのうちの 1 つは、.xml ファイルにフォルダーを追加する MSI を実行しますPATH。CMD を再起動せずに、後続のバッチ ファイルがこの変更を認識するようにするにはどうすればよいですか? Windows Server 2008 R2 x64 を使用しています。
call新しいプロセスの開始が機能することを期待して、 、cmd /cおよびを試しましstart ""たが、機能しません。
in run-both-scripts.bat
call script1.bat <-- This runs an MSI which modifies the PATH
call script2.bat <-- This relies on the PATH changes which were made by the MSI in script1.bat
明確にするために:これは再現するのがかなり簡単です。
- CMD を開始
- を使用せずに手動で環境変数を作成し
setxて、MSI の動作を模倣します。- [コンピューター] -> [プロパティ] -> [システムの詳細設定] -> [環境変数] -> [新規] を右クリックします。
helloたとえば、値を持つ環境変数を作成しますhi there。
- CMD ウィンドウで、 と入力し
echo %hello%ます。あなたは得るでしょう%hello%。 - 試してみてください
cmd /c "echo %hello%。あなたは得るでしょう%hello%。 start ""新しい CMD プロセスを開こうとします。タイプecho %hello%。あなたは得るでしょう%hello%。start "" echo %hello%新しい CMD プロセスでコマンドを実行してみてください。あなたは得るでしょう%hello%。- 最後に、 [スタート] メニューから手動で新しい CMD ウィンドウを開き、
echo %hello%そこから入力してみてください。わかりますhi there。
したがって、CMD に環境変数の変更を認識させる唯一の方法は、CMD を再起動することであることがわかります。