我有一个Windows批处理从目录中读取我的configuration文件(也batch file)。 现在我想调用一个内部函数来处理每个这个configuration文件。 由于它是一个for循环,文件被一个接一个地处理。 但是我想同时为每个文件执行每个函数。
到目前为止,我只find同时运行命令的解决scheme,即“开始”命令。 但迄今为止内部function尚无解决scheme。
背景:每个configuration文件都包含许多具有不同值的variables,函数可以自动使用, 而不用作为parameter passing它们。
每个configuration文件都包含参数,以便执行sqlcmd并处理和定义输出文件。 由于variables太多,我不想将它们作为参数移交,因此不希望将函数外包到一个单独的.bat文件中。
作为参考,代码摘录如下:
FOR %%I IN ("%path_job_sheets%\*.bat") DO (CALL "%%I" & CALL :get_period "%%I") :get_period CALL LOTS OF VARIABLES CALL :get_job :get_job DO MORE PARAMETER CALLING
需要执行“:get_period”,但批处理应该调用下一个.bat文件。
有没有人有解决办法吗?
你可以使用start
。
改变你的文件,所以它启动当前的批处理文件本身(即%~f0
)
@echo off if "%~1"=="thread_job" goto :thread_job ... FOR %%I IN ("%path_job_sheets%\*.bat") DO ( CALL "%%I" CALL :get_period "%%I" ) exit /b ... :get_period set "fileName=%~1" start "Title %filename%" cmd /c "%~f0" thread_job exit /b :thread_job CALL LOTS OF VARIABLES CALL :get_job
如果你有很多工作,那么使用start /b
在同一个窗口中运行所有的工作可能是一个好主意。