Показать полную графическую версию : [решено] Оператор и\или в коде проверки наличия файлов
Stalker_AleX333
23-09-2017, 21:38
Народ, подскажите. Есть такая конструкция:
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%"
Что-то я погуглил и ничего. То-ли я такой тупой, то-ли лыжи не едут...
В кусок нужен оператор "%OldModPackFiles1% И\ИЛИ %OldModPackFiles2% И\ИЛИ %OldModPackFiles3% И\ИЛИ %OldModPackFiles4%" »
Stalker_AleX333, Вы понимаете, что «И» и «ИЛИ» дают совершенно противоположные результаты в итоге? Определитесь.
В любом случае, ни оператора «И», ни оператора «ИЛИ» в пакетных файлах не предусмотрено. Укажите, какой из двух операторов Вам был бы нужен, и Вам покажут реализацию.
dir /a-d/b "%OldModsPackFiles1%" "%OldModsPackFiles2%" "%OldModsPackFiles3%" "%OldModsPackFiles4%" && echo TRUE
т.е. хотя бы один
Stalker_AleX333
24-09-2017, 00:00
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
)
только вот не пойму, почему нет реакции на команду color C? »
У меня — есть реакция:
https://i.imgur.com/V8BcekD.png
В чём она должна, по Вашему мнению, выражаться?
Stalker_AleX333
24-09-2017, 00:41
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, я не могу перевести на понятный для себя язык выражение «текст в этой части кода она не хочет "красить"» («она» — это «реакция», если помните).
Команда COLOR ничего не «красит». Она меняет номера цветов из текущей палитры консоли. Целиком. Для всей консоли. Никакой «раскраски» вида «часть текста одного цвета, часть — другого цвета».
Вы понимаете, что «И» и «ИЛИ» дают совершенно противоположные результаты в итоге? Определитесь. »
Почитайте какую-нибудь классическую литературу по алгоритмам и логическим операторам. И/или - вполне распространённая запись, обозначает неисключающее или т.е. оператор OR. "Противоположные результаты" даёт исключающее ИЛИ - XOR.
Busla, я что-то пропустил, и булева алгебра изменилась со времён моего ученичества? Если кто скажет, что это:
Истина И Истина = Истина
Истина И Ложь = Ложь
Ложь И Истина = Ложь
Ложь И Ложь = ЛожьИстина ИЛИ Истина = Истина
Истина ИЛИ Ложь = Истина
Ложь ИЛИ Истина = Истина
Ложь ИЛИ Ложь = Ложь— мальчик одинаковые результаты, пусть первым бросит в меня камень. Ничего другого под «противоположные результаты» я не подразумевал.
Iska, в булевой алгебре-логике 4 основных оператора:
НЕ = NOT
И = AND
ИЛИ = XOR
И/ИЛИ = OR
Истина ИЛИ Истина = Ложь
Истина И/ИЛИ Истина = Истина
P.S. Поправочка: в литературе посвящённой алгоритмам, логике и т.п. используются специальные символы. А И/или - закреплённая в словарях и справочниках языковая норма, т.к. в русском языке или обычно несёт исключающий характер.
Stalker_AleX333
24-09-2017, 17:27
Команда COLOR ничего не «красит». Она меняет номера цветов из текущей палитры консоли. Целиком. Для всей консоли. Никакой «раскраски» вида «часть текста одного цвета, часть — другого цвета». »
Не совсем, в моем случае, кое-как извернуться можно, что я и сделал. В таком тестовом куске:
@cls
@echo off
set "testfile=test.txt"
if not exist testfile ( color 0C
echo TEST1
pause
goto test2
)
:test2
cls
color 07
@echo TEST2
pause
Текст TEST1 будет красного цвета, а текст TEST2 - дефолтного белого. Но вне тествого bat-нка пока не работает. А надо запихнуть в код, что я писал выше.
upd. Этот кусок даже в виде отдельного файла работает как-то странно, да и цвет не задается:
cls
@echo off
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
)
color 07
@echo All ok.
pause
exit
Да и еще, хочу запилить такие штуки:
tasklist | find "skyrimse.exe"
if errorlevel 0 color 0c
echo.
echo ╔═══════════════════════════════════════════════════════════╗
echo ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
echo ╚═══════════════════════════════════════════════════════════╝
echo.
echo.
echo *Внимание! Обнаружен запущенный процесс игры (SkyrimSE.exe). Выйдете из игры, прежде чем запускать панель управления сборкой!
echo.
echo.
pause
exit
Ищем файл Silver Raven mods pack ver.1.2.7 (в папке откуда запущен батник) без расширения. Не нашли? - тогда ищем такой же но с любым окончанием ver.x.x.x Запоминаем последние пять символов (в переменную %VerID%), содержащие номер версии и пихаем их в сообщение в коде ниже. Не нашли ничего - показываем другое сообщение.
set "ModsPackVerID=Silver Raven mods pack ver.1.2.7.*"
If not exist "%ModsPackVerID%" ( color 0c
echo.
echo ╔═══════════════════════════════════════════════════════════╗
echo ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
echo ╚═══════════════════════════════════════════════════════════╝
echo.
echo.
echo *ВНИМАНИЕ! Обнаружен устаревший идентификатор сборки версии %VerID%. Вероятно, установка или обновление до данной версии было произведено некорректно. Рекомендуется произвести полное удаление, с ручной очисткой оставшихся файлов и установить сборку заново.
echo.
echo.
pause
)
Поиск процесса »
@echo off
tasklist|>nul find "skyrimse.exe" && color 0c
:: или
::if not errorlevel 1 color 0c
pause
Поиск файла - идентификатора »
т.е. маска именно: *ver.цифра.цифра.цифра* и все без расширения или расширение может быть? Точки есть в маске и есть в поиске имени с расширением и пять последних символов надо пояснить или пояснить цель всего этого действа.
Текст TEST1 будет красного цвета, а текст TEST2 - дефолтного белого. »
Нет. Да, сначала TEST1 будет красного, а затем тоже стал бы белым (если бы Вы не очищали консоль посредствм «cls»).
Хотите разные цвета в консоли — пользуйте внешние утилиты типа echox, ansicon и escape-последовательности и т.п. (CMD/BAT - [решено] Разный цвет строк bat (http://forum.oszone.net/thread-276421.html)), либо PowerShell — там поддержка цветов встроенная.
upd. Этот кусок даже в виде отдельного файла работает как-то странно, да и цвет не задается: »
Какой цвет «не задаётся»?
Iska, в булевой алгебре-логике 4 основных оператора: »
Я знаю три. Основных. К коим «Исключающее ИЛИ» не относится.
ИЛИ = XOR
И/ИЛИ = OR »
Вы, видимо, тут ошиблись в спешке и написали наоборот.
Хорошо, коллега, Вы меня убедили. Я нигде ранее не встречал написания «Исключающего ИЛИ» как «И/ИЛИ». Рассказывайте, что Вы читали, откуда почерпнули такое написание. Будем просвещаться.
Stalker_AleX333
25-09-2017, 13:30
alpap, маска - только цифры с точками (или последние пять символов) файла без расширения, начинающегося на Silver Raven mods pack ver.
Чуть дополню условия поиска: если нашли два файла идентификатора (т.е. тот, который задан в bat-нике и еще любой другой), так же выкидываем ошибку.
Т.е.
1. Актуальный id и ничего более - ок
2. Только устаревший id - ошибка №1 (из сообщений выше)
3. Актуальный id и устаревший id - ошибка №2
4. Не нашли вообще ничего - ошибка №3
Да, сначала TEST1 будет красного, а затем тоже стал бы белым (если бы Вы не очищали консоль посредствм «cls»). »
Да знаю я, что командой color окрашивается весь текст консоли, и без сторонних средств нормальную замену не сделать. Но мне этого и не нужно. Достаточно того, что я слепил. Главное - пользователь видит менюшки белыми а ошибки - красными. Другое дело, что не все из них (сообщений об ошибках) почему-то реагируют на команду, оставаясь белого цвета.
Вбейте кто-нибудь код целиком в тестовый файл. Я не вижу ошибок.
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
)
:: Поиск процеса игры
tasklist |> nul find "skyrimse.exe" && ( color 0c
echo.
echo ╔═══════════════════════════════════════════════════════════╗
echo ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
echo ╚═══════════════════════════════════════════════════════════╝
echo.
echo.
echo *Внимание! Обнаружен запущенный процесс игры (SkyrimSE.exe). Выйдете из игры, прежде чем запускать панель управления сборкой!
echo.
echo.
pause
exit
)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Проверка актуальности сборки
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
set "ModsPackVerID=Silver Raven mods pack ver.1.2.7.*"
if not exist "%ModsPackVerID%" ( color 0c
echo.
echo ╔═══════════════════════════════════════════════════════════╗
echo ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
echo ╚═══════════════════════════════════════════════════════════╝
echo.
echo.
echo *ВНИМАНИЕ! Обнаружен устаревший идентификатор сборки версии %VerID%. Вероятно, установка или обновление до данной версии было произведено некорректно. Рекомендуется произвести полное удаление, с ручной очисткой оставшихся файлов и установить сборку заново.
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"
Я не вижу ошибок. »
И тем не менее, они пишутся открытым текстом.
echo *Внимание! Обнаружен запущенный процесс игры ^(SkyrimSE.exe^). Выйдете из игры, прежде чем запускать панель управления сборкой!
Дальше не глядел.
Stalker_AleX333
25-09-2017, 14:23
Iska, так, стоп. А что не так-то со скобками? Они есть и в других сообщениях, но к ошибкам это не приводит.
upd. Ой я дурак. Сообщение же само по себе в скобках. Все верно.
А что не так-то со скобками? Они есть и в других сообщениях, но к ошибкам это не приводит. »
Эти скобки расположены внутри других операторных скобок:
tasklist.exe | >nul find.exe "skyrimse.exe" && (
color 0c
echo ╔═══════════════════════════════════════════════════════════╗
echo ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
echo ╚═══════════════════════════════════════════════════════════╝
echo *Внимание Обнаружен запущенный процесс игры ^(SkyrimSE.exe^). Выйдете из игры, прежде чем запускать панель управления сборкой
pause
exit /b
)
Посему, без экранирования интерпретатор команд воспримет первую же «)» как конец операторных скобок:
tasklist.exe | >nul find.exe "skyrimse.exe" && (
color 0c
echo ╔═══════════════════════════════════════════════════════════╗
echo ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
echo ╚═══════════════════════════════════════════════════════════╝
echo *Внимание Обнаружен запущенный процесс игры (SkyrimSE.exe)bla-bla-bla. Выйдете из игры, прежде чем запускать панель управления сборкой
pause
exit /b
)
https://i.imgur.com/3lzLDM1.png
В данном случае достаточно экранировать только закрывающую скобку, но лучше экранировать обе — и открывающую, и закрывающую.
Прочие же echo со скобками расположены вовне операторных скобок, посему последние не вызывают при интерпретации подобных проблем.
Stalker_AleX333
25-09-2017, 14:54
Iska, а с этим можешь помочь?
alpap, маска - только цифры с точками (или последние пять символов) файла без расширения, начинающегося на Silver Raven mods pack ver.
Чуть дополню условия поиска: если нашли два файла идентификатора (т.е. тот, который задан в bat-нике и еще любой другой), так же выкидываем ошибку.
Т.е.
1. Актуальный id и ничего более - ок
2. Только устаревший id - ошибка №1 (из сообщений выше)
3. Актуальный id и устаревший id - ошибка №2
4. Не нашли вообще ничего - ошибка №3 »
Iska, а с этим можешь помочь? »
Сомневаюсь, ибо мне непонятно, что требуется.
Stalker_AleX333,
ибо мне непонятно, что требуется »
присоединяюсь
например
маска - только цифры с точками (или последние пять символов) файла без расширения, начинающегося на Silver Raven mods pack ver »
так только цифры с точками: *цифра.цифра.цифра или *x:~-5
или же каждый файл начинается так: Silver Raven mods pack ver *цифра.цифра.цифра или Silver Raven mods pack ver *x:~-5
где этот файл (файлы) находятся? В папке с батником или отдельно и что может быть там еще кроме них чтобы знать каким образом их искать.
теперь самое непонятное
нашли два файла идентификатора - файла??? задан в bat-нике??? Искать именно в батнике?
и еще любой другой, что значит любой? Где он еще задан?
приведите лучше образец из нескольких файлов
покажите на них что есть маска по которой искать и что будет являться id
еще интересны возможные варианты этих id по отношению их сравнения, например:
ver 1.10.12
ver 10.1.12
ver 111.1.1
ver 01.02.1
различные их сочетания - это раз и cmd-шная команда sort, к примеру, может нервы хорошо попортить чтобы выявить из них максимальную версию (и что считать за максимальную) - это все тоже надо сразу предусмотреть и уложить в код.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.