3

有谁知道如何在传递给 cmd.exe 的命令字符串中包含 goto 标签?

像这样的东西:

cmd.exe /c ":retry & copy /y new_file.exe file.exe & if [%errorlevel%]==[1] goto :retry" 
4

2 回答 2

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"
于 2013-08-13T16:53:44.953 回答
3

很简单,你不能在 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
于 2013-08-13T16:25:07.230 回答