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

Аватара пользователя
alpap

Re: CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов

Сообщение alpap »

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





Набросал что-то вроде заготовки сообщений для различных ошибок

[spoiler]Код:
[/spoiler]

Код: Выделить всё

:: Поиск файла-идентификатора сборки
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 архивы.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов

Сообщение Iska »

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

Re: CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов

Сообщение Iska »

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

Re: CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов

Сообщение Iska »

Извиняюсь, запамятовал про эту тему.


Цитата Iska:



Вы, видимо, тут ошиблись в спешке и написали наоборот.

Я нигде ранее не встречал написания «Исключающего ИЛИ» как «И/ИЛИ».
CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов




Это, конечно, "гениальный" ход - сначала исправить моё утверждение на обратное, а после сказать, что не встречались с таким.




Цитата Iska:



Цитата Busla:

Iska, в булевой алгебре-логике 4 основных оператора: »

Я знаю три. Основных. К коим «Исключающее ИЛИ» не относится.
CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов




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



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

Re: CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов

Сообщение Iska »

Цитата Busla:



Это, конечно, "гениальный" ход - сначала исправить моё утверждение на обратное, а после сказать, что не встречались с таким.
CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов




Я предположил, что Вы описались. Это не так? Теперь я правильно понимаю, что выделенное:


Цитата Busla:



Iska, в булевой алгебре-логике 4 основных оператора:

НЕ = NOT

И = AND

ИЛИ = XOR

И/ИЛИ = OR

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

Истина И/ИЛИ Истина = Истина
CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов




мне следует понимать именно так, как Вы написали и не иначе?





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




Цитата Busla:



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




Ткните пальцем номер/номера страниц или укажите названия статей, где можно посмотреть.




Цитата Busla:



Если, например, открыть MIT'овский учебник "Алгоритмы: построение и анализ", то там упоминаются 6 основных логических элементов: NOT, AND, OR, XOR, NAND и NOR, но при этом явно указано, что подробно рассматривают только первые 4. Наверное, в смысле практического использования, они и есть "основные".
CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов




Спасибо, ясно. Источник Вашей информации понятен.
Аватара пользователя
Busla

Re: CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов

Сообщение Busla »

Цитата Iska:



Равным образом никогда не встречался с трактовкой «ИЛИ» как «XOR», а не «OR».
CMD/BAT - [решено] Оператор и\или в коде проверки наличия файлов




мама вас в детстве не спрашивала: Тебе купить машинку или мячик?

это XOR - исключающее ИЛИ

и сами никогда не говорили: "могу выделить время сегодня или завтра" - это тоже XOR




Цитата Iska:



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




Полагаю, словарём вы пользоваться умеете. Будет доступ к книге - найдёте. Когда писал, - сверялся, оно там есть.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»