PDA

Показать полную графическую версию : [решено] Ввод переменной с клавиатуры


Michael
10-02-2015, 16:07
Здравствуйте.
Помогите разобраться. Необходимо ввести значение переменной с клавиатуры.
Имеется следующий код:

echo off
rem переменная, определяющая имя удаленного компьютера с базой данных
set PC=PC_NAME
rem переменная, определяющая каталог хранения базы данных на удаленном компьютере
set BASE=BASE_NAME
echo Копирование данных с %PC%
xcopy /s /q \\%PC%\c$\%BASE%\* ..\%DATE%\%BASE%\
echo ERRORLEVEL после копирования %ERRORLEVEL%
set MY_ERRORLEVEL=%ERRORLEVEL%
echo MY_ERRORLEVEL=%MY_ERRORLEVEL%
if %MY_ERRORLEVEL%==0 (
echo NO_ERROR>>my.txt
exit
) else (
echo Повторим копирование?
echo Сотрудник должен выйти из базы
echo Для продолжения нажмите Y или y
set /p MY_SELECT="Дайте ответ: "
echo MY_SELECT=%MY_SELECT%
)
pause
pause
exit

При ошибке копирования должен произойти ввод с клавиатуры, но переменная пустая:
http://s60.radikal.ru/i167/1502/47/4a53a77741a1.png
При этом, если сделать вывод значения переменной MY_SELECT за пределами блока if, то все работает.
Где я допустил ошибку?
Спасибо

Michael
10-02-2015, 16:19
Вопрос решен, тему можно убить, спасибо

echo off
setlocal enabledelayedexpansion
rem переменная, определяющая имя удаленного компьютера с базой данных
set PC=PC_NAME
rem переменная, определяющая каталог хранения базы данных на удаленном компьютере
set BASE=BASE_NAME
echo Копирование данных с %PC%
xcopy /s /q \\%PC%\c$\%BASE%\* ..\%DATE%\%BASE%\
echo ERRORLEVEL после копирования %ERRORLEVEL%
set MY_ERRORLEVEL=%ERRORLEVEL%
echo MY_ERRORLEVEL=%MY_ERRORLEVEL%
if %MY_ERRORLEVEL%==0 (
echo NO_ERROR>>my.txt
exit
) else (
echo Повторим копирование?
echo Сотрудник должен выйти из базы
echo Для продолжения нажмите Y или y
set /p MY_SELECT="Дайте ответ: "
echo MY_SELECT=!MY_SELECT!
)
endlocal
pause
pause
exit

Foreigner
10-02-2015, 17:26
set /p MY_SELECT="Дайте ответ: " »
Ух, вот оно не паханное поле

Michael
10-02-2015, 18:05
не паханное поле »
почему?

Foreigner
10-02-2015, 18:13
Можно просто нажать ввод ничего не вводя, можно ввести что угодно, например забыть переключить язык и вместо "Y/y" будет "Н/н", ну и т.д.

Michael
10-02-2015, 18:48
Проверка ввода (Y/y или все прочее) будет сделана дальше. Просто в процессе написания батника столкнулся с проблемой, которую не смог решить (пустая переменная), поэтому анализ ввода пока отсутствует. Или вы не об этом?

Foreigner
10-02-2015, 19:20
столкнулся с проблемой, которую не смог решить (пустая переменная) »
Не совсем понял, если про ввод, то переменную можно предопределить:

@echo off
setlocal

set "input=y"
set /p input="Enter Y/n: "
if /i not "%input%"=="n" (echo Y) else (echo N)




© OSzone.net 2001-2012