Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Ввод переменной с клавиатуры (http://forum.oszone.net/showthread.php?t=295308)

Michael 10-02-2015 16:07 2469539

Ввод переменной с клавиатуры
 
Здравствуйте.
Помогите разобраться. Необходимо ввести значение переменной с клавиатуры.
Имеется следующий код:
Код:

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

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

При этом, если сделать вывод значения переменной MY_SELECT за пределами блока if, то все работает.
Где я допустил ошибку?
Спасибо

Michael 10-02-2015 16:19 2469546

Вопрос решен, тему можно убить, спасибо
Код:

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 2469566

Цитата:

Цитата Michael
set /p MY_SELECT="Дайте ответ: " »

Ух, вот оно не паханное поле

Michael 10-02-2015 18:05 2469580

Цитата:

Цитата Foreigner
не паханное поле »

почему?

Foreigner 10-02-2015 18:13 2469583

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

Michael 10-02-2015 18:48 2469596

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

Foreigner 10-02-2015 19:20 2469616

Цитата:

Цитата Michael
столкнулся с проблемой, которую не смог решить (пустая переменная) »

Не совсем понял, если про ввод, то переменную можно предопределить:
Код:

@echo off
setlocal

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



Время: 21:07.

Время: 21:07.
© OSzone.net 2001-