我是个Unix专家,但我现在需要在Windows上编写一个系统,并尝试编写一个脚本来移动一些文件。我正在尝试让父批处理文件调用一个包含以下内容的子批处理文件:
set REPORTFILE=c:\report.txt
然后,我希望父文件能够使用%REPORTFILE%变量。显然,CALL命令会创建一个新的上下文。 在Unix中,你只需要源化脚本,那在Windows中是否也可能呢?
我是个Unix专家,但我现在需要在Windows上编写一个系统,并尝试编写一个脚本来移动一些文件。我正在尝试让父批处理文件调用一个包含以下内容的子批处理文件:
set REPORTFILE=c:\report.txt
然后,我希望父文件能够使用%REPORTFILE%变量。显然,CALL命令会创建一个新的上下文。 在Unix中,你只需要源化脚本,那在Windows中是否也可能呢?
如果我理解得没错...在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>caller
C:\temp>echo 这是调用者
this is the caller
C:\temp>echo 初始值为:
initial value is:
C:\temp>call setter.batC:\temp>echo 这是值设置器
this is the value setter
C:\temp>set reportfile=c:\report.txtC:\temp>echo 值为: 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