2016-01-25 2 views
0

В течение жизни я не могу понять, почему я не могу выполнить эхо-тест с помощью этого простого пакетного скрипта с использованием GOTO. Путь существует. Это должно быть ОЧЕНЬ просто, но чего-то не хватает. Если я запустил этот скрипт, я должен повторить «Test Exit», но я получаю «Test Install», даже если путь существует. Любая помощь?batch-Goto Loop, если программа найдена

@echo off 

:TestInstall 
Echo Test Install 

pause 

IF EXIST "C:\Program Files\Microsoft Office\root\Office16\Excel.exe" (
    GOTO TestExit 
    )ELSE{ 
    GOTO TestInstall 
    } 

:TestExit 
Echo Test Exit 

pause 
+1

Что заставляет вас думать, что вы можете смешивать и сопоставлять круглые скобки с фигурными фигурными скобками? Если вы прочитаете справку для команды 'IF', она покажет вам, как именно используется синтаксис, когда вам нужно использовать предложение' ELSE'. – Squashman

+0

@Squashman ничего. Это была ошибка с моей стороны –

ответ

1
)ELSE{ 
GOTO TestInstall 
} 

А? Почему вы используете разные скобки/скобки? Также партия довольно требователен пространства - там должен быть один до и после else:

) ELSE (
GOTO TestInstall 
) 
+0

Ошибка от моего имени. Не видел разных кронштейнов –

1

Вы хотите что-то вроде этого:

@echo off 

:install 
echo install 
pause 

IF EXIST "C:\Program Files\Microsoft Office\root\Office16\Excel.exe" (
    goto install 
) ELSE (
    goto exit 
) 

:exit 
echo exit 
pause 

Ну, у вас есть )ELSE{, который не является правильным, он должен быть переведена на и закрыть скобкой, а не фигурной скобкой. Также забудьте поместить пробелы.

Помните, что если файл не существует, у вас будет бесконечный цикл между командами :install и goto install.

Кроме того, в начале вашего скрипта, потому что метка :install находится прямо в верхней части, она будет запускать часть install, прежде чем делать какие-либо проверки.

Вы должны переместить часть установки в соответствии с инструкцией if, если вы не хотите, чтобы это произошло.

Смежные вопросы