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

@echo off
call define_wait.bat

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

REM rest...

我的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

问题是,如果我在另一个批处理文件中定义等待函数它不起作用,则调用 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

在主 bat 中,我现在不再包含批处理文件,而是直接调用它,如下所示:
call define_wait.bat :WAIT_AND_PRINT 5

关于batch-file - 使用参数从包含的批处理文件中调用函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36176267/

10-14 18:46
查看更多