在我的主批处理文件中,我包含另一个批处理文件并想要调用其中定义的函数,代码如下所示:
@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 我的主批处理中复制代码文件,一切正常...
我该如何正确地做到这一点?
工作函数 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)