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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Множественная проверка в цикле (IF) с оперратором "ИЛИ"(OR)

Ответить
Настройки темы
CMD/BAT - [решено] Множественная проверка в цикле (IF) с оперратором "ИЛИ"(OR)

Новый участник


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


Конфигурация

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


Изменения
Автор: Nuclears
Дата: 22-09-2011
Описание: epic fail
Я так понял что в cmd оператор IF довольно унылый....
http://forum.oszone.net/thread-204350.html

мне как то организовать следущее нужно:
Код: Выделить весь код
IF EXIST %SYSTEMDRIVE%\VOLSA or %SYSTEMDRIVE%\VOLSD or ... or %SYSTEMDRIVE%\VOLSV (
ECHO 1
)
IF EXIST %SYSTEMDRIVE%\VOLMB or %SYSTEMDRIVE%\VOLME or ... or %SYSTEMDRIVE%\VOLMW (
ECHO 2
)
IF EXIST %SYSTEMDRIVE%\VOLDC or %SYSTEMDRIVE%\VOLDF or ... or %SYSTEMDRIVE%\VOLDX (
ECHO 3
)
вообщем в каждой группе (VOLxy) сделать проверочку y
если делать проверку каждого случая, слишком громоздкий код получается

что-то совсем сам запутался
нужно было так:
Код: Выделить весь код
IF EXIST %SYSTEMDRIVE%\VOLMA or %SYSTEMDRIVE%\VOLSA or %SYSTEMDRIVE%\VOLDA or ... or %SYSTEMDRIVE%\VOLMV or %SYSTEMDRIVE%\VOLSV or %SYSTEMDRIVE%\VOLDV (
rem вообщем буковки A, D, G,...,V
ECHO 1
)
IF EXIST %SYSTEMDRIVE%\VOLMB or %SYSTEMDRIVE%\VOLSB or %SYSTEMDRIVE%\VOLDB or ... or %SYSTEMDRIVE%\VOLMW or %SYSTEMDRIVE%\VOLSW or %SYSTEMDRIVE%\VOLDW (
rem вообщем буковки B, E, H,...,W
ECHO 2
)
IF EXIST %SYSTEMDRIVE%\VOLMC or %SYSTEMDRIVE%\VOLSC or %SYSTEMDRIVE%\VOLDC or ... or %SYSTEMDRIVE%\VOLMX or %SYSTEMDRIVE%\VOLSX or %SYSTEMDRIVE%\VOLDX (
rem вообщем буковки C, F, I,...,X

ECHO 3
)
уж простите , каюсь!

PS: счас опробываю варианты

Отправлено: 03:40, 22-09-2011

 

Ветеран


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

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


Nuclears, можно так:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for %%i in (a d v) do if exist "%SystemDrive%\vols%%i" echo 1 & goto :Break1

:Break1
for %%i in (b e w) do if exist "%SystemDrive%\volm%%i" echo 2 & goto :Break2

:Break2
for %%i in (c f x) do if exist "%SystemDrive%\vold%%i" echo 3 & goto :Break3

:Break3

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:35, 22-09-2011 | #2



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

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


Старожил


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

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


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

set "IfExist=dir "%SystemDrive%\vol*" /b/a | findstr /i"
set "Return=>nul && echo"

%IfExist% "vols[adv]$" %Return% 1
%IfExist% "volm[bew]$" %Return% 2
%IfExist% "vold[cfx]$" %Return% 3
Баловство для красивости кода

Последний раз редактировалось SendMessage, 22-09-2011 в 15:43. Причина: подправил скрипт

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

Отправлено: 13:54, 22-09-2011 | #3


Старожил


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

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


С учетом новых данных:
Код: Выделить весь код
set "IfExist=dir "%SystemDrive%\vol*" /b/a | findstr /i"
set "Return=>nul && echo"

%IfExist% "vol[dms][adgv]$" %Return% 1
%IfExist% "vol[dms][behw]$" %Return% 2
%IfExist% "vol[dms][cfix]$" %Return% 3
Буковки нужные добавьте.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:56, 22-09-2011 | #4


Ветеран


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

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


Цитата SendMessage:
С учетом новых данных:
Код: Выделить весь код
%IfExist% "vol[dms][adgv]$" …
»
Получается, что изначально техзадание неверно поставлено было?

Отправлено: 16:52, 22-09-2011 | #5


Новый участник


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

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


Iska, да, мало спал, плохо думал вот и накосячил

SendMessage, ваше решение допилил
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set "IfExist=dir "%SystemDrive%\Install\VOL*" /b/a | findstr /i"
set "VOLXY=>nul && CALL"

%IfExist% "VOL[MSD][AGO]$" %VOLXY% :VOLxAGO
%IfExist% "VOL[MSD][BHP]$" %VOLXY% :VOLxBHP
%IfExist% "VOL[MSD][CIQ]$" %VOLXY% :VOLxCIQ

:VOLxAGO
ECHO ":VOLxAGO"
rem do something
CALL :INSTALL

:VOLxBHP
ECHO ":VOLxBHP"
rem do something
CALL :INSTALL

:VOLxCIQ
ECHO ":VOLxCIQ"
rem do something

CALL :INSTALL

:INSTALL
ECHO OK
pause
exit

Отправлено: 14:53, 23-09-2011 | #6


Аватара для Devils0411

Ветеран


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

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


Ребятки, подскажите, как сделать множественное сравнение, например: (напишу просто текстом, а не кодом)
если переменная var1=2, а переменная var2=4 тогда вывести сообщение var1=2, var2=4
З.Ы, уже нашел на форуме, что простым способом через If не получиться. только последовательным сравнением.

-------
Скрипт автоустановки WINDOWSXP; Скрипт мультиустановки ОС


Последний раз редактировалось Devils0411, 29-12-2011 в 11:55.


Отправлено: 11:33, 29-12-2011 | #7


Аватара для Devils0411

Ветеран


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

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


Возник вопрос, как производная от вышеописанного мною.
Помогите сократить размер кода:
Код: Выделить весь код
@echo off
set var=1
set var2=2

:Again
if %var2% EQU 1 (
if %var% EQU 1 (
goto choice1) else (
if %var% EQU 2 (
goto choice2)
)
) Else (
if %var2% EQU 2 (
if %var1% EQU 1 (
goto choice1) else (
if %var1% EQU 2 (
goto choice3)
)
) Else (
goto Again)
)

-------
Скрипт автоустановки WINDOWSXP; Скрипт мультиустановки ОС


Отправлено: 13:13, 29-12-2011 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Множественная проверка в цикле (IF) с оперратором "ИЛИ"(OR)

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как управлять "Начинать с экрана приветствия" или "Защита паролем" в св-вах заставки. Alex Konovalov Microsoft Windows 2000/XP 12 17-05-2016 19:27
Ошибка - [решено] Перестал открываться "Блокнот" или где в реестре "живёт" "блокнот". ALEKCEN Microsoft Windows 2000/XP 2 09-03-2011 21:42
[решено] Переменные среды папок "Мои рисунки", "Моя музыка" или общие Redew Автоматическая установка Windows 2000/XP/2003 9 03-10-2009 20:43
Когда нажимаю букву"M" или "L","U"...Проблема.. ekodrive Microsoft Windows 2000/XP 7 27-01-2006 15:13
"Вход в систему недоступен" или "Не найден сервер для проверки пароля входа в сеть" rooty Microsoft Windows NT/2000/2003 8 23-08-2005 02:18




 
Переход