有谁知道如何在传递给 cmd.exe 的命令字符串中包含 goto 标签?
像这样的东西:
cmd.exe /c ":retry & copy /y new_file.exe file.exe & if [%errorlevel%]==[1] goto :retry"
有谁知道如何在传递给 cmd.exe 的命令字符串中包含 goto 标签?
像这样的东西:
cmd.exe /c ":retry & copy /y new_file.exe file.exe & if [%errorlevel%]==[1] goto :retry"
您可以通过将命令置于无限循环中来完成您的逻辑,并让它在成功时退出。我不确定我是否推荐这个,因为错误可能会导致真正的无限循环。
cmd.exe /c "for /l %N in () do @copy /y new_file.exe file.exe && exit"
我想你可以添加一个计数器,在 N 次失败尝试后退出。这是一个成功后立即退出的示例,如果失败 3 次也会退出。
cmd.exe /c "for /l %N in () do @copy /y new_file.exe file.exe && exit || >nul 2>&1 set /a 1/((failCnt+=1)%3) || exit"
很简单,你不能在 cmd 行使用 goto 或 call 带标签。
标签仅在批处理文件中起作用。
但是,如果您的行本身在批处理文件中,您可以使用参数重新启动批处理文件。
我的批处理文件
@echo off
if "%1"=="intern" goto %2
echo First start
cmd.exe /c myBatch.bat intern :myLabel
echo after
exit /b
:myLabel
echo second start
exit /b