现有File1.bat和File2.bat两个批文件,
File1.bat中的代码:
- @echo off
- rem XXXXXXXXXXXXXXXX File1 XXXXXXXXXXXXXXXX
- call File2 100 TestVar
- echo.
- echo XXXXX最后的输出XXXXX:TestVar=[%TestVar%]
- echo.
- echo.
- echo End&&pause >nul
- exit /b
复制代码
File2.bat中的代码:
- rem XXXXXXXXXXXXXXXX File2 XXXXXXXXXXXXXXXX
- :file2
- SETLOCAL ENABLEDELAYEDEXPANSION
- set /a "testA=%~1"
- set "testB=%~2"
- set /a testA+=100
- SETLOCAL DISABLEDELAYEDEXPANSION
- endlocal
- set "%testB%=%testA%"
- echo 过程(File2):[testA=%testA%][testB=%testB%][TestVar=%TestVar%]
- set "testA="
- set "testB="
- goto :eof
复制代码
经过测试,当File2.bat中停用『SETLOCAL ENABLEDELAYEDEXPANSION 』,其结果[TestVar]就可以正常输入,反之不可以,
问题是怎么即使用『SETLOCAL ENABLEDELAYEDEXPANSION 』,又能够得到[TestVar]的值?
研究这个的目的,是想把File2.bat制作成类似C++中的函数,以方便调用,并且能到得到返回值。 |