![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов |
|
CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов
|
Stalker_AleX333
Сообщения: n/a |
Народ, подскажите. Есть такая конструкция:
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 ) Что-то я погуглил и ничего. То-ли я такой тупой, то-ли лыжи не едут... |
|
Отправлено: 21:38, 23-09-2017 |
Stalker_AleX333
Сообщения: n/a |
Цитата Iska:
Не совсем, в моем случае, кое-как извернуться можно, что я и сделал. В таком тестовом куске: @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 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 ) |
|
Последний раз редактировалось Stalker_AleX333, 24-09-2017 в 19:40. Отправлено: 17:27, 24-09-2017 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Stalker_AleX333:
@echo off tasklist|>nul find "skyrimse.exe" && color 0c :: или ::if not errorlevel 1 color 0c pause Цитата Stalker_AleX333:
|
||
Отправлено: 00:56, 25-09-2017 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Stalker_AleX333:
Хотите разные цвета в консоли — пользуйте внешние утилиты типа echox, ansicon и escape-последовательности и т.п. (CMD/BAT - [решено] Разный цвет строк bat), либо PowerShell — там поддержка цветов встроенная. Цитата Stalker_AleX333:
Цитата Busla:
Цитата Busla:
Хорошо, коллега, Вы меня убедили. Я нигде ранее не встречал написания «Исключающего ИЛИ» как «И/ИЛИ». Рассказывайте, что Вы читали, откуда почерпнули такое написание. Будем просвещаться. |
||||
Отправлено: 01:29, 25-09-2017 | #13 |
Stalker_AleX333
Сообщения: n/a |
alpap, маска - только цифры с точками (или последние пять символов) файла без расширения, начинающегося на Silver Raven mods pack ver.
Чуть дополню условия поиска: если нашли два файла идентификатора (т.е. тот, который задан в bat-нике и еще любой другой), так же выкидываем ошибку. Т.е. 1. Актуальный id и ничего более - ок 2. Только устаревший id - ошибка №1 (из сообщений выше) 3. Актуальный id и устаревший id - ошибка №2 4. Не нашли вообще ничего - ошибка №3 Цитата 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 ) :: Поиск процеса игры 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" |
|
Последний раз редактировалось Stalker_AleX333, 25-09-2017 в 14:39. Отправлено: 13:30, 25-09-2017 | #14 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Stalker_AleX333:
Дальше не глядел. |
|
Отправлено: 13:44, 25-09-2017 | #15 |
Stalker_AleX333
Сообщения: n/a |
Iska, так, стоп. А что не так-то со скобками? Они есть и в других сообщениях, но к ошибкам это не приводит.
upd. Ой я дурак. Сообщение же само по себе в скобках. Все верно. |
Последний раз редактировалось Stalker_AleX333, 25-09-2017 в 14:28. Отправлено: 14:23, 25-09-2017 | #16 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Stalker_AleX333:
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
)
![]() В данном случае достаточно экранировать только закрывающую скобку, но лучше экранировать обе — и открывающую, и закрывающую. Прочие же echo со скобками расположены вовне операторных скобок, посему последние не вызывают при интерпретации подобных проблем. |
|
Отправлено: 14:45, 25-09-2017 | #17 |
Stalker_AleX333
Сообщения: n/a |
Iska, а с этим можешь помочь?
Цитата:
|
|
Отправлено: 14:54, 25-09-2017 | #18 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Stalker_AleX333:
|
|
Отправлено: 17:04, 25-09-2017 | #19 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Stalker_AleX333,
Цитата Iska:
например Цитата Stalker_AleX333:
или же каждый файл начинается так: 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, к примеру, может нервы хорошо попортить чтобы выявить из них максимальную версию (и что считать за максимальную) - это все тоже надо сразу предусмотреть и уложить в код. |
||
Отправлено: 21:36, 25-09-2017 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|