2017-07-03 9 views
0

環境変数を別のバッチファイルに設定するバッチファイルを除外しようとしています。この作品は多少複雑ですが、私はむしろ複数のバッチファイルでそれを繰り返すことはありません。私はネストされたバッチファイルで実行しようとしている実際のコードでこの投稿を複雑にしませんが、私が何をしようとしているかを示し、問題を再現する簡単な例を提供します。環境変数をネストされたバッチファイルに設定する

環境変数ABCが定義されていない:

Batch1.cmd

cmd.exe /c setvar.cmd abc def 
set abc 

が、これはエラーがBatch1.cmdで "設定ABC" のために戻さ

set var=%1 
set val=%2 
set %var%=%val% 

setvar.cmd

Batch1.cmdに戻ると、変数が存在しないため、cmd.exeは新しい環境を起動すると考えています。

バッチファイルをネストして作成する方法はありますか?

答えて

3

環境ブロックはプロセス間で共有されません。新しいcmdインスタンスを開始すると、コントロールを現在のバッチファイルに戻す前に、別の環境ブロックが作成、変更、破棄されます。これは、別のプロセスで行われたように変更が反映されません。

call setvar.cmd abc defを使用して、現在のプロセスでネストされたバッチファイルを開始します。