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

时间:2015-12-08 10:46:57

标签: windows batch-file

我有一个Windows批处理,可以从目录中读取我的配置文件(也是批处理文件)。现在我想调用一个内部函数来处理每个配置文件。因为它是for循环,所以文件一个接一个地处理。但我想同时为每个文件执行每个函数。

到目前为止,我只找到了同时运行命令的解决方案,即“start”命令。但到目前为止还没有内部功能的解决方案。

背景:每个配置文件都包含许多具有不同值的变量,函数可以自动使用这些变量,而不将它们作为参数传递。

每个配置文件都包含参数,以便执行sqlcmd并处理和定义输出文件。由于变量太多,我不想将它们作为参数进行切换,因此不希望将函数外包到单独的.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文件。

有人有解决方案吗?

1 个答案:

答案 0 :(得分:3)

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