我有一个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文件。
有人有解决方案吗?
答案 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
在同一窗口中运行所有工作可能是个好主意。