Пакетный файл Windows Система не может найти указанную метку пакета-выход

У меня проблема с пакетным файлом и метками DOS. Я продолжаю получать эту ошибку: в одной папке есть два командных файла (QQ.bat и Calling.bat).

код QQ.bat:

@echo off
set /a i=0
:loop
set /a i=i+1
echo %i%
c:
cd \Users
cd mytool
cd QQ
cd Bin
QQ.exe
if "%i%"=="2" goto exit 
goto loop

Код Calling.bat:

@echo off
set/a i=0
:loop
set/a i=i+1
start /b cmd /c QQ.bat
if "%i%"=="4"  exit
goto loop
pause

вывод консоли «Система не может найти указанную метку пакета -выход» и случайным образом запускает несколько QQ.exe, а количество неверно, в то время как мой исключенный результат заключается в том, что одновременно будет выполняться 8 QQ.exe.


person user3432390    schedule 18.03.2014    source источник


Ответы (3)


В консоли отображается ошибка, поскольку оператор GOTO пытается перейти к несуществующей метке.

Из того, что я могу понять, используя goto exit в вашем скрипте, вы хотите, чтобы скрипт завершился в этот момент. Для этого используйте:

GOTO:EOF вместо goto exit.

person r3ap3r    schedule 18.03.2014
comment
Большое спасибо. Я последовал вашему предложению, чтобы исправить мой код. Ошибка отсутствует. - person user3432390; 19.03.2014

Это должно делать то, что делает ваш код: QQ.exe запускается 8 раза, но ваш код повторно использует переменную %i%, поэтому она может вам не понадобиться 8 раз.

@echo off
for /L %%a in (1,1,8) do start "" /d "c:\Users\mytool\QQ\Bin" "QQ.exe"
person foxidrive    schedule 18.03.2014

Вы правильно определили метки, но неправильно интерпретировали синтаксис goto. Вместо этого используйте «goto :exit». Вы можете найти справку по пакетной команде, выполнив ее с помощью «/?» в командной строке (например, "goto /?")

person AndreyP    schedule 29.05.2014