有谁知道如何在传递给cmd.exe的命令字符串中包含goto标签?
这样的事情:
cmd.exe /c ":retry & copy /y new_file.exe file.exe & if [%errorlevel%]==[1] goto :retry"
答案 0 :(得分:5)
您可以通过将命令置于无限循环中来完成逻辑,并在成功时将其退出。我不确定我是否推荐这个,因为错误可能导致真正的无限循环。
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"
答案 1 :(得分:3)
很简单,你不能使用goto或在cmd线上用标签打电话 标签仅在批处理文件中起作用。
但是,如果您的行本身位于批处理文件中,则可以使用参数重新启动批处理文件。
mybatch.bat
@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