【问题标题】:Question of call function in cmd batch filecmd批处理文件中调用函数的问题
【发布时间】:2021-07-12 06:18:41
【问题描述】:

我有一个关于cmd批处理文件的调用功能的问题。

根据下面的源代码:

如果我想调用 REDO/NORMAL 函数,当函数结束时,问题是可以返回 ECHO 复制文件... 运行,直到 EXIT( 0)到最后?

谢谢。

源代码

@ECHO OFF

ECHO Checking Network Connection...
ECHO.
TIMEOUT /T 1 /NOBREAK > NUL

PING -n 2 192.168.1.1 | FIND "TTL" > NUL 
    
IF errorlevel 1 (
    
    Powershell -noP -c "Write-Host 'ERROR: Failure! Please Check Network Connection! Script Exit!' -BackgroundColor BLACK -ForegroundColor RED"
    TIMEOUT /T 1 /NOBREAK > NUL
    TIMEOUT /T 5
    EXIT(0)
    
) ELSE (
    
    Powershell -noP -c "Write-Host 'INFO: Success! Network Connected!' -ForegroundColor GREEN"
    TIMEOUT /T 2 /NOBREAK > NUL 

)


FOR /F %%a IN ('Powershell -Nop -c "Get-Date -Format 'HH:mm'"') DO SET time=%%a

IF %time% GTR 12:00 (

GOTO REDO
    
) ELSE (

GOTO NORMAL

)

ECHO Copying File...
ECHO.
    
TIMEOUT /T 1 /NOBREAK > NUL
    
COPY "C:\temp\A.csv" "D:\temp\"

ECHO.
ECHO Copy Completed!
TIMEOUT /T 1 /NOBREAK > NUL
    
EXIT(0)

:REDO
ECHO THIS IS REDO FUNCTION

:NORMAL
ECHO THIS IS NORMAL FUNCTION

【问题讨论】:

  • 您在寻找call 命令吗?
  • GOTO 不等于 CALL?请指教。谢谢。
  • 不,它们不相等。 GOTO 不会保存返回点,call 会。请参阅 goto /?call /?(或在 SS64 中查找它们)。顺便说一句:exit 的正确语法是 exit 0(没有括号)。但是您也不应该使用它,因为它会退出您的脚本。使用goto :eof:eof 是一个内置标签,表示 End Of File)或exit /b 0(参见exit /?)
  • 您需要通过goto :EOFexit /B 终止您的:REDO 部分,以免无意中落入:NORMAL 部分...

标签: batch-file cmd goto


【解决方案1】:

试试这个:

    @ECHO OFF

ECHO Checking Network Connection...
ECHO.
TIMEOUT /T 1 /NOBREAK > NUL

PING -n 2 192.168.1.1 | FIND "TTL" > NUL 
    
IF errorlevel 1 (
    
    Powershell -noP -c "Write-Host 'ERROR: Failure! Please Check Network Connection! Script Exit!' -BackgroundColor BLACK -ForegroundColor RED"
    TIMEOUT /T 1 /NOBREAK > NUL
    TIMEOUT /T 5
    EXIT(0)
    
) ELSE (
    
    Powershell -noP -c "Write-Host 'INFO: Success! Network Connected!' -ForegroundColor GREEN"
    TIMEOUT /T 2 /NOBREAK > NUL 

)


FOR /F %%a IN ('Powershell -Nop -c "Get-Date -Format 'HH:mm'"') DO SET time=%%a

IF %time% GTR 12:00 (

GOTO REDO
:BACK
) ELSE (

GOTO NORMAL
:BACK
)

ECHO Copying File...
ECHO.
    
TIMEOUT /T 1 /NOBREAK > NUL
    
COPY "C:\temp\A.csv" "D:\temp\"

ECHO.
ECHO Copy Completed!
TIMEOUT /T 1 /NOBREAK > NUL
    
EXIT(0)

:REDO
ECHO THIS IS REDO FUNCTION
GOTO BACK

:NORMAL
ECHO THIS IS NORMAL FUNCTION
GOTO BACK

【讨论】:

    猜你喜欢
    • 2021-09-06
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多