使用参数从包含的批处理文件调用函数

pro*_*m85 4 cmd batch-file

在我的主批处理文件中,我包含另一个批处理文件并想要调用其中定义的函数,代码如下所示:

@echo off
call define_wait.bat

if "%1"=="WAIT" (
    call :WAIT_AND_PRINT 5
    echo.
)

REM rest...
Run Code Online (Sandbox Code Playgroud)

我的define_wait.bat如下所示:

:WAIT_AND_PRINT
set /a time=%1
for /l %%x in (1, 1, %time%) do (
    ping -n 1 -w 1000 1.0.0.0 > null
    echo|set /p=.
)
goto :EOF

:WAIT
set /a time="%1 * 1000"
ping -n 1 -w %time% 1.0.0.0 > null
goto :EOF
Run Code Online (Sandbox Code Playgroud)

问题是,如果我在另一个批处理文件中定义等待函数,它不起作用,调用call :WAIT_AND_PRINT 5不会正确传递参数(错误:缺少操作数)...如果我从Define_wait.bat int 我的主批处理中复制代码文件,一切正常...

我该如何正确地做到这一点?

pro*_*m85 5

工作函数 bat 将其参数转发给其子函数:

@echo off
call %*
goto :EOF

:WAIT_AND_PRINT
set /a time=%1
for /l %%x in (1, 1, %time%) do (
    ping -n 1 -w 1000 1.0.0.0 > null
    echo|set /p=.
)
goto :EOF

:WAIT
set /a time="%1 * 1000"
ping -n 1 -w %time% 1.0.0.0 > null
goto :EOF
Run Code Online (Sandbox Code Playgroud)

在主蝙蝠中,我现在不再包含批处理文件,而是直接调用它,如下所示:

call define_wait.bat :WAIT_AND_PRINT 5
Run Code Online (Sandbox Code Playgroud)