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

Компьютерный форум 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

 
Stalker_AleX333


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

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


alpap, посидел, подумал. Выходит как-то так:

С каждой версии продукта, будет устанавливаться файл без расширения (упс, не выйдет - последняя цифра номера версии будет считаться расширением файла) с расширением .id, носящий имя: Silver Raven mods pack ver.x.x.xx (будет только такой формат).
Он будет находиться в %USERPROFILE%\AppData\Local\Skyrim Special Edition и его имя строго задано (при обновлении продукта, обновляется и bat-ник, проверяющий его). Но, если пользователь накосячит с установкой обновлений или поставит полную новую\старую версию поверх уже существующей (что недопустимо в моем случае), в папке окажется несколько таких файлов. Задача - найти таковые и предупредить пользователя о возможных последствиях, путем принудительного вывода соответствующего сообщения при запуске bat-ника. Ну а если вдруг файл-идентификатор не был найден вообще то тут сам бог велел подозревать возможное наличие проблем.

Получается, полный алгоритм должен быть таким:

После установки продукта, запускается наш bat-ник и проверяет наличие файла-идентификатора по маске Silver Raven mods pack ver.x.x.xx.id в %USERPROFILE%\AppData\Local\Skyrim Special Edition, совпадающего по названию с тем что уже задан. Если такой файл уже есть и номер версии совпадает - идем дальше. Но если что-то не так...
1. Найден только устаревший id-файл - текст с ошибкой №1 (с описанием найденной старой версии. пример писал выше. при считывании номера, смотрим только символы после ver.)
2. Актуальный id-файл и устаревший id-файл - текст с ошибкой №2 (тут бы перечислить все найденные номера версий. прим. 1.2.3, 1.2.6, и т.д.)
3. Не нашли вообще ничего - текст с ошибкой №3

Набросал что-то вроде заготовки сообщений для различных ошибок
Код: Выделить весь код
:: Поиск файла-идентификатора сборки
set "ModsPackVerID=Silver Raven mods pack ver.1.2.7.id"
set "ModsPackVerIDOld=Silver Raven mods pack ver.x.x.x.id" :: - ?
:: %VerID% и %VerIDOld% - ?
if exist "%ModsPackVerIDOld%" ( color 0c
 echo.
 echo  ╔═══════════════════════════════════════════════════════════╗
 echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
 echo  ╚═══════════════════════════════════════════════════════════╝
 echo.
 echo.
 echo *ВНИМАНИЕ! Обнаружен устаревший идентификатор сборки версии %VerID%. Вероятно, установка или обновление до данной версии было произведено некорректно. Рекомендуется произвести полное удаление, с ручной очисткой оставшихся файлов и установить сборку заново.
 echo.
 echo.
pause
)

if exist "%ModsPackVerID% %ModsPackVerIDOld%" ( color 0c
 echo.
 echo  ╔═══════════════════════════════════════════════════════════╗
 echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
 echo  ╚═══════════════════════════════════════════════════════════╝
 echo.
 echo.
 echo *ВНИМАНИЕ! Обнаружено несколько файлов-идентификаторов сборки версий %VerID%, %VerIDOld%. Вероятно, установка или обновление до данной версии было произведено некорректно. Рекомендуется произвести полное удаление, с ручной очисткой оставшихся файлов и установить сборку заново.
 echo.
 echo.
pause
)

if not exist "%ModsPackVerID%" ( color 0c
 echo.
 echo  ╔═══════════════════════════════════════════════════════════╗
 echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
 echo  ╚═══════════════════════════════════════════════════════════╝
 echo.
 echo.
 echo *ВНИМАНИЕ! Не обнаружено файла-идентификатора версии сборки. Вероятно, установка или обновление до данной версии было произведено некорректно. Рекомендуется произвести полное удаление, с ручной очисткой оставшихся файлов и установить сборку заново.
 echo.
 echo.
pause
)


Надеюсь, описал все нюансы. Если что - спрашивайте. Сам уже несколько раз перерабатывал варианты, чтобы пользователь не грохнул случайно файл-идентификатор. Пока это лучшее, что мне пришло в голову. Главное, чтобы bat-ник, который будет копировать файл-идентификатор (по окончании установки) успел отработать до того, как автоматически запустится основной. Я использую самораспаковывающиеся sfx архивы.

Последний раз редактировалось Stalker_AleX333, 26-09-2017 в 00:30.


Отправлено: 23:40, 25-09-2017 | #21



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

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

Stalker_AleX333


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

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


Я так понимаю тему можно закрывать? Поток благодетельной помощи иссяк?

Отправлено: 20:44, 28-09-2017 | #22


Ветеран


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

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


Stalker_AleX333, начинайте изучать пособие «Как самому правильно создавать инсталляционные пакеты». Можете ознакомиться с Inno Setup или NSIS. Только, повторяю: сначала — теорию, потом — код.

Отправлено: 21:52, 28-09-2017 | #23


Ветеран


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

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


Извиняюсь, запамятовал про эту тему.
Цитата Iska:
Вы, видимо, тут ошиблись в спешке и написали наоборот.
<..> Я нигде ранее не встречал написания «Исключающего ИЛИ» как «И/ИЛИ». »
Это, конечно, "гениальный" ход - сначала исправить моё утверждение на обратное, а после сказать, что не встречались с таким.

Цитата Iska:
Цитата Busla:
Iska, в булевой алгебре-логике 4 основных оператора: »
Я знаю три. Основных. К коим «Исключающее ИЛИ» не относится. »
Если, например, открыть MIT'овский учебник "Алгоритмы: построение и анализ", то там упоминаются 6 основных логических элементов: NOT, AND, OR, XOR, NAND и NOR, но при этом явно указано, что подробно рассматривают только первые 4. Наверное, в смысле практического использования, они и есть "основные".

По поводу "И/ИЛИ" - в Логическом словаре-справочнике (Н. И. Кондаков, 1975 год) уже "И/ИЛИ" приводится как практически используемая форма записи.

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


Ветеран


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

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


Цитата Busla:
Это, конечно, "гениальный" ход - сначала исправить моё утверждение на обратное, а после сказать, что не встречались с таким.»
Я предположил, что Вы описались. Это не так? Теперь я правильно понимаю, что выделенное:
Цитата Busla:
Iska, в булевой алгебре-логике 4 основных оператора:
НЕ = NOT
И = AND
ИЛИ = XOR
И/ИЛИ = OR
Истина ИЛИ Истина = Ложь
Истина И/ИЛИ Истина = Истина
»
мне следует понимать именно так, как Вы написали и не иначе?


Я не встречался вообще с таким написанием, как «И/ИЛИ». Ни в какой трактовке. Равным образом никогда не встречался с трактовкой «ИЛИ» как «XOR», а не «OR». Я привык, что трактовки вполне однозначны:
  • «Отрицание», «НЕ», «NOT»;
  • «Конъюнкция», «И», «AND»;
  • «Дизъюнкция», «ИЛИ», «OR»;
  • «Неравнозначность» (иногда — «Строгая дизъюнкция»), «Исключающее ИЛИ», «XOR»;
и т.д. — эквивалентность, импликация и прочее.

Цитата Busla:
По поводу "И/ИЛИ" - в Логическом словаре-справочнике (Н. И. Кондаков, 1975 год) уже "И/ИЛИ" приводится как практически используемая форма записи. »
Ткните пальцем номер/номера страниц или укажите названия статей, где можно посмотреть.

Цитата Busla:
Если, например, открыть MIT'овский учебник "Алгоритмы: построение и анализ", то там упоминаются 6 основных логических элементов: NOT, AND, OR, XOR, NAND и NOR, но при этом явно указано, что подробно рассматривают только первые 4. Наверное, в смысле практического использования, они и есть "основные". »
Спасибо, ясно. Источник Вашей информации понятен.

Отправлено: 06:57, 09-10-2017 | #25


Ветеран


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

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


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

Цитата Iska:
Ткните пальцем номер/номера страниц »
Полагаю, словарём вы пользоваться умеете. Будет доступ к книге - найдёте. Когда писал, - сверялся, оно там есть.

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



Компьютерный форум 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




 
Переход