19

私は UNIX 派ですが、Windows でシステムを作成する必要があり、いくつかのファイルを移動するスクリプトを作成しようとしています。親バッチ ファイルに、以下を含む子バッチ ファイルを呼び出しさせようとしています。

set REPORTFILE=c:\report.txt

そして、親が %REPORTFILE% 変数を使用できるようにしたいと考えています。どうやら CALL コマンドは新しいコンテキストを作成します。Unix では、スクリプトをソースするだけですが、Windows では可能ですか?

4

1 に答える 1

21

理解できれば...これはVistaでうまくいくようです:

caller.bat

echo this is the caller
echo initial value is: %reportfile%
call setter.bat
echo value is: %reportfile%

setter.bat

echo this is the value setter
set reportfile=c:\report.txt

C:\temp>発信者

C:\temp>echo これは呼び出し元です
this is the caller
C:\temp>echo 初期値は次のとおりです:
initial value is:
C:\temp>call setter.bat

C:\temp>echo これは値セッターです
this is the value setter
C:\temp>set reportfile=c:\report.txt

C:\temp>エコー値: c:\report.txt
value is: c:\report.txt

括弧の代わりに goto を使用するように更新されました:

if not exist file.txt goto doit
goto notfound
:doit 
echo this is the caller 
echo initial value is: %reportfile% 
call setter.bat
echo value is: %reportfile%
goto end
:notfound
 echo file found 
:end
于 2012-10-10T18:39:27.360 に答える