Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов
Stalker_AleX333


Сообщения: n/a

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


Изменения
Автор: Stalker_AleX333
Дата: 23-09-2017
Народ, подскажите. Есть такая конструкция:
Код: Выделить весь код
set "OldModsPackFiles1=Data\Flora Overhaul.esp"
set "OldModsPackFiles2=Data\Player Blink Fix.esp"
set "OldModsPackFiles3=Data\Realistic Ragdoll Force.esp"
set "OldModsPackFiles4=Data\Static Mesh Improvement.esp"

If exist "%OldModsPackFiles1% %OldModsPackFiles2% %OldModsPackFiles3% %OldModsPackFiles4%"( color C
echo.
echo  ╔═══════════════════════════════════════════════════════════╗
echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
echo  ╚═══════════════════════════════════════════════════════════╝
echo.
echo.
echo *ВНИМАНИЕ! В сборке обнаружены устаревшие файлы. Вероятно, установка или обновление до данной версии было произведено некорректно. Рекомендуется произвести полное удаление, с ручной очисткой оставшихся файлов и установить сборку заново.
echo.
echo.

pause
goto g_menu
)
В кусок нужен оператор "%OldModPackFiles1% И\ИЛИ %OldModPackFiles2% И\ИЛИ %OldModPackFiles3% И\ИЛИ %OldModPackFiles4%"
Что-то я погуглил и ничего. То-ли я такой тупой, то-ли лыжи не едут...

Отправлено: 21:38, 23-09-2017

 

Ветеран


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

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


Цитата Stalker_AleX333:
В кусок нужен оператор "%OldModPackFiles1% И\ИЛИ %OldModPackFiles2% И\ИЛИ %OldModPackFiles3% И\ИЛИ %OldModPackFiles4%" »
Stalker_AleX333, Вы понимаете, что «И» и «ИЛИ» дают совершенно противоположные результаты в итоге? Определитесь.

В любом случае, ни оператора «И», ни оператора «ИЛИ» в пакетных файлах не предусмотрено. Укажите, какой из двух операторов Вам был бы нужен, и Вам покажут реализацию.

Отправлено: 23:10, 23-09-2017 | #2



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

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


Ветеран


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

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


Код: Выделить весь код
dir /a-d/b "%OldModsPackFiles1%" "%OldModsPackFiles2%" "%OldModsPackFiles3%" "%OldModsPackFiles4%" && echo TRUE
т.е. хотя бы один
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:11, 23-09-2017 | #3

Stalker_AleX333


Сообщения: n/a

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


alpap, то, что нужно.

только вот не пойму, почему нет реакции на команду color C? Может это из за использования ее же в коде выше:
Код: Выделить весь код
set "GameExeFile=SkyrimSE.exe"
If not exist "%GameExeFile%" ( color C
 echo.
 echo  ╔═══════════════════════════════════════════════════════════╗
 echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
 echo  ╚═══════════════════════════════════════════════════════════╝
 echo.
 echo.
 echo *ОШИБКА! Панель управления сборкой не предназначена для запуска вне папки с игрой. Перезаупустите приложение из папки игры для корректной работы.
 echo.
 echo.
pause
exit
)

Отправлено: 00:00, 24-09-2017 | #4


Ветеран


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

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


Цитата Stalker_AleX333:
только вот не пойму, почему нет реакции на команду color C? »
У меня — есть реакция:
Скрытый текст


В чём она должна, по Вашему мнению, выражаться?

Отправлено: 00:09, 24-09-2017 | #5

Stalker_AleX333


Сообщения: n/a

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


Iska, дык в том-то и выражается. Но у меня текст в этой части кода она не хочет "красить".

Код целиком
Код: Выделить весь код
cls
@echo off
title Панель управления Silver Raven mods pack

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Проверка доступности файлов игры
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

set "GameExeFile=SkyrimSE.exe"
If not exist "%GameExeFile%" ( color 0c
 echo.
 echo  ╔═══════════════════════════════════════════════════════════╗
 echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
 echo  ╚═══════════════════════════════════════════════════════════╝
 echo.
 echo.
 echo *ОШИБКА! Панель управления сборкой не предназначена для запуска вне папки с игрой. Перезаупустите приложение из папки игры для корректной работы.
 echo.
 echo.
pause
exit
)

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Проверка актуальности сборки
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

set "OldModsPackFiles1=Data\Flora Overhaul.esp"
set "OldModsPackFiles2=Data\Player Blink Fix.esp"
set "OldModsPackFiles3=Data\Realistic Ragdoll Force.esp"
set "OldModsPackFiles4=Data\Static Mesh Improvement.esp"
set "OldModsPackFiles5=Data\Blacksmith Forge Water Fix SE USSEP.esp"
If exist dir /a-d/b "%OldModsPackFiles1% %OldModsPackFiles2% %OldModsPackFiles3% %OldModsPackFiles4% %OldModsPackFiles5%" ( color 0c
 echo.
 echo  ╔═══════════════════════════════════════════════════════════╗
 echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
 echo  ╚═══════════════════════════════════════════════════════════╝
 echo.
 echo.
 echo *ВНИМАНИЕ! В сборке обнаружены устаревшие файлы. Вероятно, установка или обновление до данной версии было произведено некорректно. Рекомендуется произвести полное удаление, с ручной очисткой оставшихся файлов и установить сборку заново.
 echo.
 echo.
pause
)

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Основное меню панели управления сборкой
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:main_menu
cls
color 07
@echo.
@echo  ╔═══════════════════════════════════════════════════════════╗
@echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
@echo  ╚═══════════════════════════════════════════════════════════╝
@echo.
@echo.

@echo ■ 1. Копирование отсортированного списка плагинов (модов) в AppData пользователя.
@echo.
@echo  Нажав цифру 1, вы подтверждаете свое согласие на копирование.
@echo.
@echo.
@echo.

@echo ■ 2. Проверка наличия обновлений сборки. (Настоятельно рекомендуется проводить хотя-бы раз в месяц)
@echo.
@echo  Нажав цифру 2, вы подтверждаете свое согласие на переход в меню выбора источника загрузки обновлений.
@echo.
@echo.
@echo.

@echo ■ 3. Загрузка ReShade. (Не влияет на производительность игры, в отличии от ENB и SweetFX)
@echo.
@echo  Нажав цифру 3, вы подтверждаете свое согласие на переход по ссылке загрузки. (Откроется браузер)
@echo.
@echo.
@echo.

@echo ■ 4. Загрузка LOOT.
@echo  Если вы собираетесь добавлять новые плагины (моды) к сборке, воспользуйтесь данной утилитой для сортировки порядка их загрузки.
@echo.
@echo  Нажав цифру 4, вы подтверждаете свое согласие на переход по ссылке загрузки. (Откроется браузер)
@echo.
@echo.
@echo.

@echo ■ 5. Полное удаление сборки. (Если вы хотите сохранить какие-либо файлы, сделайте это сейчас)
@echo.
@echo  Нажав цифру 5, вы подтверждаете свое согласие на переход в меню удаления сборки.
@echo.
@echo.
@echo.
@echo  [Чтобы просмотреть все опции панели управления используйте прокрутку]
@echo.
@echo.

@Set /p var="> Введите номер опции и нажмите Enter: "

if %var%==1  call :option_1
if %var%==2  call :option_2
if %var%==3  call :option_3
if %var%==4  call :option_4
if %var%==5  call :option_5
goto main_menu
pause& exit

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Копирование отсортированного списка плагинов
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:option_1
cls
set "FileIn=Plugins.txt"
set "BoxOut=%USERPROFILE%\AppData\Local\Skyrim Special Edition"
if not exist "%FileIn%" ( color 0c
 echo.
 echo *ОШИБКА! Файл Plugins.txt не найден!
 echo.
 echo Не удалось скопировать отсортированный список плагинов в AppData пользователя.
 echo Извлеките необходимый файл из установочных архивов со сборкой в папку с игрой вручную и перезапустите панель управления сборкой, или воспользуйтесь сортировкой плагинов с помощью программы LOOT. *Опция присутствует в данной панели управления.							
 echo.
 echo.
pause
exit /b
)

if not exist "%BoxOut%" md "%BoxOut%"
copy /y "%FileIn%" "%BoxOut%\"
@echo.
@echo Отсортированный список плагинов скопирован в AppData пользователя.
@echo.
@echo.
pause
exit /b

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Проверка обновлений
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:option_2
cls
@echo.
@echo   Выберете источник проверки обновлений (будет открыт браузер):
@echo.
@echo  ╔══════════════════════════════════════════════════════════════════╗
@echo  ║ ╔═══╗              	╔═══╗ 			╔═══╗		    ║
@echo  ║ ║ 1 ║ ЯндексДиск	║ 2 ║ Gamer-Mods.ru	║ 3 ║ RuTracker.org ║
@echo  ║ ╚═══╝		╚═══╝			╚═══╝		    ║
@echo  ╚══════════════════════════════════════════════════════════════════╝
@echo			   Вернуться в главное меню - 0
@echo.
@echo  *Если вы хотите сообщить об ошибке(ах) в сборке или просто высказать свои идеи и предложения автору, рекомендуется использовать 2-ой вариант.
@echo.
@echo.

@Set /p var="> Введите свой ответ и нажмите Enter: "
if %var%==1 call :option_2_check_updates_yandexdisk
if %var%==2 call :option_2_check_updates_gamer-mods
if %var%==3 call :option_2_check_updates_rutracker
if %var%==0 goto main_menu

:: Проверка обновлений - ЯндексДиск
:option_2_check_updates_yandexdisk
cls
start https://yadi.sk/d/qyJbvZs43Mb3fR
goto main_menu

:: Проверка обновлений - Gamer-mods.ru
:option_2_check_updates_gamer-mods
cls
start http://gamer-mods.ru/forum/73-2082-1
goto main_menu

:: Проверка обновлений - RuTracker.org
:option_2_check_updates_rutracker
cls
start https://rutracker.org/forum/viewtopic.php?t=5356842
goto main_menu

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Загрузка ReShade
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:option_3
cls
start https://reshade.me
exit /b

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Загрузка LOOT
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:option_4
cls
start https://loot.github.io
exit /b

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Удаление сборки
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:option_5
cls
@echo  Удаление Silver Raven mods pack.
@echo.
@echo          ╔═══╗                                                       ╔═══╗
@echo  Нажмите ║ Y ║ для подтверждения начала процесса удаления сборки или ║ N ║ для его отмены.
@echo          ╚═══╝                                                       ╚═══╝
@echo.
@echo  *ВСЕ файлы в подпапках Interface, Meshes, Scripts, Textures, Video, а также плагины сборки и данный exe файл будут удалены!
@echo.
@echo.

@Set /p var="> Введите свой ответ и нажмите Enter: "
if %var%==y call :option_5_start_uninstall
if %var%==n goto main_menu

:option_5_start_uninstall
:: Удаление папок сборки
cls
setlocal enableextensions enabledelayedexpansion
pushd "%~dp0" & (
rd /s /q "Data\Interface" "Data\Meshes" "Data\Scripts" "Data\Textures" "Data\Video"
	
:: Удаление плагинов сборки и прочих файлов	
del /f /q "Data\A Quality World Map - Textures.*" "Data\A Quality World Map.*" "Data\Better Dynamic Snow.*" "Data\Book Covers Skyrim - Textures.*" "Data\Book Covers Skyrim.*" "Data\Cutting Room Floor.*" "Data\Enhanced Blood.*" "Data\Footprints.*" "Data\Immersive Citizens - AI Overhaul.*" "Data\Improved Closefaced Helmets.*" "Data\Improved Puddles.*" "Data\No Snow Under The Roof - Cutting Room Floor Patch.* "Data\No Snow Under The Roof.*" "Data\Northfires Photoreal Mountains.*" "Data\RealisticWaterTwo.*" "Data\Silver Raven Mods Pack.*" "Data\Skyrim Flora Overhaul.*" "Data\Snazzy Furniture and Clutter Overhaul.*" "Data\Static Mesh Improvement Mod.*" "Data\The Paarthurnax Dilemma.*" "Data\True Storms - Textures.*" "Data\True Storms.*" "Data\Unofficial Skyrim Special Edition Patch.*" "Data\Wet and Cold.*" "Data\icepenguinworldmapclassic.*" "Plugins.*" "Readme.*" "Readme update.*"                 
popd
)
endlocal

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Удаление самого cmd(exe)-шника
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

del "%~dpnx0"

Последний раз редактировалось Stalker_AleX333, 24-09-2017 в 19:27.


Отправлено: 00:41, 24-09-2017 | #6


Ветеран


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

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


Stalker_AleX333, я не могу перевести на понятный для себя язык выражение «текст в этой части кода она не хочет "красить"» («она» — это «реакция», если помните).

Команда COLOR ничего не «красит». Она меняет номера цветов из текущей палитры консоли. Целиком. Для всей консоли. Никакой «раскраски» вида «часть текста одного цвета, часть — другого цвета».

Отправлено: 02:17, 24-09-2017 | #7


Ветеран


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

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


Цитата Iska:
Вы понимаете, что «И» и «ИЛИ» дают совершенно противоположные результаты в итоге? Определитесь. »
Почитайте какую-нибудь классическую литературу по алгоритмам и логическим операторам. И/или - вполне распространённая запись, обозначает неисключающее или т.е. оператор OR. "Противоположные результаты" даёт исключающее ИЛИ - XOR.

Отправлено: 10:26, 24-09-2017 | #8


Ветеран


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

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


Busla, я что-то пропустил, и булева алгебра изменилась со времён моего ученичества? Если кто скажет, что это:
Код: Выделить весь код
Истина И   Истина = Истина
Истина И   Ложь   = Ложь
Ложь   И   Истина = Ложь
Ложь   И   Ложь   = Ложь
Код: Выделить весь код
Истина ИЛИ Истина = Истина
Истина ИЛИ Ложь   = Истина
Ложь   ИЛИ Истина = Истина
Ложь   ИЛИ Ложь   = Ложь
мальчик одинаковые результаты, пусть первым бросит в меня камень. Ничего другого под «противоположные результаты» я не подразумевал.

Отправлено: 11:48, 24-09-2017 | #9


Ветеран


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

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


Iska, в булевой алгебре-логике 4 основных оператора:
НЕ = NOT
И = AND
ИЛИ = XOR
И/ИЛИ = OR

Истина ИЛИ Истина = Ложь
Истина И/ИЛИ Истина = Истина

P.S. Поправочка: в литературе посвящённой алгоритмам, логике и т.п. используются специальные символы. А И/или - закреплённая в словарях и справочниках языковая норма, т.к. в русском языке или обычно несёт исключающий характер.

Последний раз редактировалось Busla, 24-09-2017 в 16:22.


Отправлено: 15:12, 24-09-2017 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - проверка наличия файлов neprotiv Скриптовые языки администрирования Windows 0 04-04-2013 22:09
Глюк это или что?, Оператор ростелеком simsa Лечение систем от вредоносных программ 1 14-01-2013 12:20
VBS/WSH/JS - [решено] Проверка наличия файлов в папке lesha73 Скриптовые языки администрирования Windows 2 17-01-2012 16:45
CMD/BAT - [решено] Батник проверки наличия диска Arsenik77 Скриптовые языки администрирования Windows 1 17-08-2011 17:41
Наилучший способ проверки наличия интернета sashadeg AutoIt 39 02-09-2010 13:35




 
Переход