【发布时间】:2014-03-20 02:10:02
【问题描述】:
我正在寻找一种从启动命令启动的批处理脚本中获取值返回的方法。让我解释一下:
我需要通过从一个主批处理脚本同时启动多个子批处理脚本来利用多处理,然后在它们完成后检索每个子批处理文件返回值。
dbenham 很好地解释了我一直在使用带有调用命令的返回变量。 该解决方案不允许多线程,因为子批处理脚本一个接一个地运行。
使用 start-command 允许多个运行批处理脚本,但值不会返回到我的主脚本,因为 start-command 显然创建了一个全新的变量上下文。
是否有人有解决方案/解决方法将子脚本中的值返回到主脚本?
下面是我需要的模型:
mainScript.bat
@echo off
setlocal
set "retval1=0"
set "retval2=0"
REM run two scripts in parallel:
start "" subscript1.bat arg1 retval1
start "" subscript2.bat arg1 retval2
REM wait for returned value
:waiting
call :sleep 1
set /a "DONE=1"
if %retval1% equ 0 set "DONE=0"
if %retval2% equ 0 set "DONE=0"
if %DONE% equ 0 goto :waiting
echo returned values are %retval1% %retval2%
exit /b
subscript1.bat
@echo off
setlocal
set "arg1=%~1"
set "retval1=%~1"
REM do some stuff...
REM return value
(endlocal
set "%retval1%=%foo%"
)
exit /b
【问题讨论】:
标签: windows multithreading batch-file scope