• ベストアンサー

Windows Server 2008(OSは関係無いかも知れませんが

Windows Server 2008(OSは関係無いかも知れませんが) Batchファイルを作成しています。具体的には以下のような構成です。 AとBと言う2つのBatchファイルにおいて、Aを実行すると中に記載されたcallコマンドでBが呼び出されます。 そして、Bの処理が完了すると再度Aへ戻ります。 この際、Bで指定した変数(SET)が、処理を完了してAに戻った際にAにまで、Bの変数が引き継がれ、処理があべこべになってしまいます… callで呼んだり、戻ったりする際に変数を引き継が無い方法や、この問題を解決する手段は無いでしょうか。 ご返信お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bardfish
  • ベストアンサー率28% (5029/17766)
回答No.2

「SETLOCAL」を使えばいいんじゃないかな? 詳しくはコマンドプロンプトで「SETLOCAL /?」してみてください。

cocoa5575
質問者

お礼

ご回答ありがとうございます。 確かにそのコマンドは有効ですね。 やはり、SETLOCAL、ENDLOCALを駆使するしかないですよね。。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.1

>callで呼んだり、戻ったりする際に変数を引き継が無い方法や、 意味がよくわからないのですが、BATCH-AとBATCH-Bとで、使用する変数名を違うものにできないのでしょうか。 それができなくて、BATCH-Aの変数の値を保持したいなら、一度、別の変数に値を保存しておけばよいです。 (Batch-A) SET BATCHAWORK=%HENSU CALL BATCH-B.BAT SET HEBSU=%BATCHAWORK はっきり覚えていないのですが、CMD でバッチを呼び出せば、呼び出し先の変数は影響しなかったような気がします。ただし、BATCH-AとBATCH-Bは並行して走ってしまうのだったような気もします。(最近バッチは使ってないもので) CMD /K BATCH-B.BAT

cocoa5575
質問者

お礼

ご回答ありがとうございます。 確かに都度、変数を読み込めば出来ますね。

すると、全ての回答が全文表示されます。

関連するQ&A