Пакетная команда получает ошибку - PullRequest
1 голос
/ 12 марта 2010

Я написал простой пакетный файл, который проверяет, существует ли путь к диску c, затем запускает exe-файл по этому пути, иначе попробуйте путь к диску d и выполните его.

IF EXIST c:\program files\x goto a 

ELSE goto b


:a
cd c:\program files\x

executable.exe  c:\temp\col.zip 


:b
cd d:\program files\x

executable.exe  c:\temp\col.zip

Я получаю эту ошибку:

---- Ошибка Ouput-- «ELSE» не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл. Система не может найти указанный путь. «executetable.exe» не распознается как внутренняя или внешняя команда, работающая программа или командный файл. «dellsysteminfo.exe» не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

Не знаю почему.

Ответы [ 3 ]

10 голосов
/ 12 марта 2010

ELSE должен быть на одной линии.Измените его на:

IF EXIST c:\program files\x (
  goto a
) ELSE (
  goto b
)

См. этот учебник для получения более подробной информации или обратитесь к этой документации Microsoft .

0 голосов
/ 12 марта 2010

Да, нет мультилинии, если / еще, просто сделайте это

IF EXIST c:\program files\x goto a
goto b

:a 
cd c:\program files\x
executable.exe c:\temp\col.zip
rem don't you want a goto here??


:b 
cd d:\program files\x
executable.exe c:\temp\col.zip
0 голосов
/ 12 марта 2010

Сообщение об ошибке довольно очевидно, в пакетных файлах нет такого понятия, как ELSE. Однако, поскольку это GOTO, это совершенно не нужно.

IF EXIST c:\program files\x goto a

goto b

Если он проходит через первую строку, это по сути дела другое.

Что касается других ошибок, они связаны с отсутствием поиска файлов, которые вы пытаетесь выполнить. Пакетные файлы чувствительны к регистру, поэтому вам нужно исправить заглавные буквы имен файлов / папок, чтобы они соответствовали реальной системе.

...