如何在Windows批处理中同时调用内部函数?

我有一个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在同一个窗口中运行所有的工作可能是一个好主意。