2011-03-22 4 views
0

Я создаю файл bat, который выполняет некоторые основные функции для сборки сервера. Сценарий сделан несколько интерактивным. Это позволяет использовать скрипт для Production, Dev или QA. Область сценария, который не ниже: было неожиданным на данный момент

echo Enter User-defined Information about this Server: 
echo Environment: 
echo 1. PROD  
echo 2. QA 
echo 3. Dev 
echo Choose one: 
CHOICE /C 123 
if errorlevel 1 (set ENVIRONMENTNAME=PROD & set ENVNAME=Production) 
if errorlevel 2 (set ENVIRONMENTNAME=QA & set ENVNAME=Acceptance) 
if errorlevel 3 (set ENVIRONMENTNAME=Dev & set ENVNAME=Development) 

После того, как я пробужден «Выберите один:» Я выбрать один из вариантов, то получите сообщение об ошибке:
: было неожиданным в это время.

+1

не подводит для меня. Я предполагаю, что это всего лишь подмножество сценария, так как я ожидаю «эхо-отключение» в первой строке скрипта. – JoDG

+0

Этот сценарий сам по себе работает для меня. Что происходит после материала с ошибкой? – Blorgbeard

+0

Остальная часть скрипта выглядит следующим образом: –

ответ

2

Удалите команды @echo off или echo off из верхней части сценария (или добавьте echo on) и используйте полученный результат для отладки, какая строка вызывает ошибку.

Для оптимизации введите if errorlevel команды в порядке убывания. Команда if errorlevel запускает, когда ERRORLEVEL является указанным номером или выше.

+0

Реверсирование порядка 'if errorlevel' нарушит этот скрипт, если вы не добавите' else', а также – Blorgbeard

+0

. Я вижу строку, которая содержит ошибки, но ее странно, что иногда она работает, а иногда и нет. –

+0

@Blorgbeard, почему это ошибка? –

0

Я понимаю, что это довольно запоздалый ответ, но я только что испытал точно такое же сообщение об ошибке, хотя это был «set/p», который вызывал проблему для меня. Линия была первоначально:

set /p Option=Do you want to go ahead and load the data? ([Y]/N): 

и решение, которое я нашел, было ставить двойные кавычки текстом подсказки, так:

set /p Option="Do you want to go ahead and load the data? ([Y]/N): " 

Не знаю, если это поможет кому-то или нет, но это решил проблему для меня :-)

+0

Я тоже видел это поведение. Специально относительно переменных в пути среды: cmd не любит путь с пробелами в них, хотя примеров для таких приложений достаточно много (например, C: \ Program Files \ ...). Включение пути в двойные кавычки обычно является хорошей практикой. – thoroc

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