【发布时间】: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 :EOF或exit /B终止您的:REDO部分,以免无意中落入:NORMAL部分...
标签: batch-file cmd goto