Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Составить скрипт с условием

Ответить
Настройки темы
CMD/BAT - Составить скрипт с условием

Аватара для Firebolt

Старожил


Сообщения: 260
Благодарности: 13

Профиль | Отправить PM | Цитировать


Вот такой вот пишу скрипт:

Код: Выделить весь код
@ echo off  IF NOT EXIST %windir%\logo2.bmp (     
REGEDIT /S \\svrmain\prog\logonwp.reg 
copy /Y \\svrmain\prog\logo2.bmp %windir%    
) ELSE (  
exit  
)
Тут все работает, но нужно добавить нюанс. Что-то типа условия в условии. Если словами, то... Когда файл logo2 не найден, то добавить такое-то измение реестра... А потом еще одно условие: если изменение не было внесено в реестр, тогда goto end - пропускаем копирование файла logo2. Вот как это условие записать про изменения в реестре?

Отправлено: 10:19, 10-07-2009

 

Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
при проверке введеного значения использовать if defined: »
Интересно... Как сделать, чтобы вводились и обрабатывались только цифры 1,2,3. При вводе других цифр действие не происходило.
Код: Выделить весь код
Set /p choice=Ваш выбор: 
if "%choice%"=="1" (ping 127.0.0.1 -n 3 > nul &start Inst.cmd &&goto n2) 
if "%choice%"=="2" (ping 127.0.0.1 -n 3 > nul &&goto n3)
if "%choice%"=="3" (ping 127.0.0.1 -n 3 > nul &&goto n2)

Отправлено: 22:55, 12-07-2011 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата sov44:
Как сделать, чтобы вводились и обрабатывались только цифры 1,2,3. При вводе других цифр действие не происходило. »
Например, так:
Код: Выделить весь код
:Again
Set /p choice=Ваш выбор (1,2,3, …, 0 - отказ от выбора): 
if "%choice%"=="1" (ping 127.0.0.1 -n 3 > nul &start Inst.cmd &&goto n2) 
if "%choice%"=="2" (ping 127.0.0.1 -n 3 > nul &&goto n3)
if "%choice%"=="3" (ping 127.0.0.1 -n 3 > nul &&goto n2)
…
if "%choice%"=="0" goto :Out
echo Введено неверное значение
goto :Again
:Out
Если же это не учитывать, то
читать дальше »
вместо кучи if'ов проще использовать такую конструкцию:
Код: Выделить весь код
Set /p choice=Ваш выбор: 
goto :n%choice%
И, далее, в Вашем случае, наподобие:
Код: Выделить весь код
:n1
start Inst.cmd
:n2
…
goto :Out

:n3
…
goto :Out

…
:Out
Или же
Код: Выделить весь код
call :n%choice%
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:02, 13-07-2011 | #22


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Iska,
Если просто нажать Enter без значения, то получим ошибку. Поэтому либо сразу определить переменную, либо проверять if defined:
Код: Выделить весь код
set "choice=fake"
:Again
....
:Out
Код: Выделить весь код
:Again
Set /p choice=Ваш выбор (1,2,3, …, 0 - отказ от выбора):
if defined choice ( 

...

)
:Out
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:29, 13-07-2011 | #23


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Foreigner, я не понял, как определять каждую переменную. Помогите с написанием скрипта.

Последний раз редактировалось sov44, 13-07-2011 в 09:10.


Отправлено: 07:11, 13-07-2011 | #24


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Код: Выделить весь код
@echo off
setlocal

:choice
set /p choice="Enter: "
if not defined choice goto:choice
if "%choice%"=="1" goto:1
if "%choice%"=="2" goto:2
if "%choice%"=="3" goto:3
goto:choice

:1
echo 1
goto:eof

:2
echo 2
goto:eof

:3
echo 3
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:17, 13-07-2011 | #25


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Iska, Если просто нажать Enter без значения, то получим ошибку. Поэтому … либо проверять if defined: »
Угу, надо. Забыл .

Отправлено: 22:16, 13-07-2011 | #26


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Подскажите, почему при нажатии цифры 1 скрипт работает как надо, при нажатии цифр 2 или 3 появляется надпись "Не правильно сделан выбор задания" вместо нужных переходов.
Код: Выделить весь код
:m1
echo.
Set /p choice="Ваш выбор: "
if not defined choice goto m1
if "%choice%"=="1" (ping 127.0.0.1 -n 3 > nul &start Inst.cmd &&goto m3) else (Echo Не правильно сделан выбор задания &goto m1)
if "%choice%"=="2" (ping 127.0.0.1 -n 3 > nul &goto k) else (Echo Не правильно сделан выбор задания &goto m1)
if "%choice%"=="3" (ping 127.0.0.1 -n 3 > nul &&goto m3) else (Echo Не правильно сделан выбор задания &goto m1)

:k
....
:m3
...
Похоже поторопился с вопросом, решил
Код: Выделить весь код
:m1
echo.
Set /p choice="Ваш выбор: "
if not defined choice goto m1
if "%choice%"=="1" (ping 127.0.0.1 -n 3 > nul &start Inst.cmd &&goto m3) else (
if "%choice%"=="2" (ping 127.0.0.1 -n 3 > nul &goto k) else (
if "%choice%"=="3" (ping 127.0.0.1 -n 3 > nul &&goto m3) else (Echo Не правильно сделан выбор задания &goto m1)
))
:k
....
:m3
...

Отправлено: 21:26, 14-07-2011 | #27


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


sov44,
A зачем столько вложенных if-else?
Код: Выделить весь код
:m1
echo.
Set /p choice="Ваш выбор: "
if not defined choice goto m1
if "%choice%"=="1" ping 127.0.0.1 -n 3 > nul && start Inst.cmd && goto m3
if "%choice%"=="2" ping 127.0.0.1 -n 3 && goto k
if "%choice%"=="3" ping 127.0.0.1 -n 3 > nul && goto m3

Echo Не правильно сделан выбор задания
goto m1

:k
....
:m3
...
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:59, 14-07-2011 | #28



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Составить скрипт с условием

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
V. 2007 - Антивирус и антиспам для exch 2007 с условием. Alexandrovav Microsoft Exchange Server 10 17-02-2010 12:03
Составить Классификацию уязвимостей СУБД. Morsel Хочу все знать 1 04-06-2009 16:22
Прочие БД - Составить Классификацию уязвимостей СУБД. Morsel Программирование и базы данных 1 04-06-2009 16:20
Разное - Помогите алгоритм составить MaZaFaKa46 Программирование и базы данных 3 28-12-2008 22:00
запрос в MySQL из PHP с условием. что-то не так делаю koresaram Вебмастеру 7 09-08-2006 14:49




 
Переход