如何将变量从一个批次传递到另一个批次

时间:2017-04-18 15:58:49

标签: batch-file variables time cmd

我有一个bat脚本,我正在尝试捕获其中每个功能的处理时间。我有两个其他bat脚本捕获开始时间和结束时间但是当我尝试将这些变量传递回主脚本时,它不起作用。请指教

  

TRIGGER.bat

if exist "inProcess.lok". (
   exit
      ) else (
            if EXIST "some.ZIP". (
                call startTime.bat
                set /a startDel=%1

    ::some Process

                call endTime.bat
                set /a endDel=%2
                set /a timeDel= ( %endDel% - %startDel% )
                set /a timeDels= %timeDel% / 100
                set timeDel=%timeDels%.%timeDel:~-2%
                echo %timeDel%
                echo %timeDel%
                echo %timeDel%
                pause
    ))
  

startTime.BAT

set starttime=%TIME%
set startcsec=%STARTTIME:~9,2%
set startsecs=%STARTTIME:~6,2%
set startmins=%STARTTIME:~3,2%
set starthour=%STARTTIME:~0,2%
set /a starttime=(%starthour%*60*60*100)+(%startmins%*60*100)+(%startsecs%*100)+(%startcsec%)

:trigger.bat %starttime%
  

endTime.Bat

set endtime=%time%
set endcsec=%endTIME:~9,2%
set endsecs=%endTIME:~6,2%
set endmins=%endTIME:~3,2%
set endhour=%endTIME:~0,2%
if %endhour% LSS %starthour% set /a endhour+=24
set /a endtime=(%endhour%*60*60*100)+(%endmins%*60*100)+(%endsecs%*100)+(%endcsec%)

:trigger.bat %endtime%

1 个答案:

答案 0 :(得分:0)

以随机方式使用call,标签和参数。这不会奏效。
这是一个非常基本的例子,说明它是如何工作的(没有参数,只是使用变量,就像Joey在评论中建议的那样)

Trigger.bat:

set starttime=dummy
set endtime=dummy
call starttime.bat
call endtime.bat
echo %starttime% %endtime%

starttime.bat:

set starttime=hello

endtime.bat:

set endtime=world