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

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

Ответить
Настройки темы
CMD/BAT - CMD-шник с внешним конфиг-файлом
Stalker_AleX333


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

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


Изменения
Автор: Stalker_AleX333
Дата: 30-01-2019
Поскольку меня задолбало перед каждой из множества опцией конвертированного в exe cmd-шника, устанавливать проверки наличия необходимых файлов на своих местах и править его при любом чихе (ибо ее юзеры, любят творить дичь), я решил запилить нечто вроде внешнего конфиг файла, где будут храниться все постоянно изменяемые параметры.

1. Для проверки наличия файлов по списку, нарыл такой код:

Код: Выделить весь код
:: NoTot счётчик отсутствующих файлов 
set NoTot=0  
:: NoFil перечень отсутствующих файлов 
set NoFil=  
 
:: перебор элементов заданного перечня 
for %%a in ("file 1.txt" "file 2.txt") do call :ChkFile %%a 
 
:: если всё в порядке - делаем то, что нужно 
if %NoTot% == 0 goto IfAllOk  
 
:: если чего-то нет - известим о факте 
echo ! Missed %NoTot% file(s) [%NoFil% ]  
goto :eof  
 
:ChkFile проверка наличия, учёт отсутствия файла 
if exist %1 goto :eof  
:: если файла нет, запомним имя и увеличим счётчик 
set NoFil=%NoFil% %1  
set /a NoTot=%NoTot%+1  
goto :eof  
 
:IfAllOk действия при наличии всех файлов из списка
Как его переделать под считывание списка из внешнего файла по адресу - Silver Raven mods pack data\config.cfg (там еще и другие данные. надо как-то обозначить границы)?
Скрытый текст

Silver Raven mods pack data\ENB\enbseries\enbbloom\GaussBlur2.h
Silver Raven mods pack data\ENB\enbseries\enbbloom\KawaseBloom.h
Silver Raven mods pack data\ENB\enbseries\modular shaders\enbeffect_AdaptTool.fxh
Silver Raven mods pack data\ENB\enbseries\modular shaders\msHelpers.fxh
Silver Raven mods pack data\ENB\enbseries\textures\SMAA_AreaTex.dds
Silver Raven mods pack data\ENB\enbseries\textures\SMAA_SearchTex.dds
Silver Raven mods pack data\ENB\enbseries\textures\Firelut.png
Silver Raven mods pack data\ENB\enbseries\textures\Firelut1.png
Silver Raven mods pack data\ENB\enbseries\textures\Firelut2.png
Silver Raven mods pack data\ENB\enbseries\enbadaptation.fx
Silver Raven mods pack data\ENB\enbseries\enbbloom.fx
Silver Raven mods pack data\ENB\enbseries\enbdepthoffield.fx
Silver Raven mods pack data\ENB\enbseries\enbeffect.fx
Silver Raven mods pack data\ENB\enbseries\enbeffectpostpass.fx
Silver Raven mods pack data\ENB\enbseries\enblens.fx
Silver Raven mods pack data\ENB\enbseries\enbsmaa.fx
Silver Raven mods pack data\ENB\enbseries\SMAA.h
Silver Raven mods pack data\ENB\enbseries\_weatherlist.ini
Silver Raven mods pack data\ENB\enbseries\enbadaptation.fx.ini
Silver Raven mods pack data\ENB\enbseries\enbbloom.fx.ini
Silver Raven mods pack data\ENB\enbseries\enbdepthoffield.fx.ini
Silver Raven mods pack data\ENB\enbseries\enbeffect.fx.ini
Silver Raven mods pack data\ENB\enbseries\enbeffectpostpass.fx.ini
Silver Raven mods pack data\ENB\enbseries\enblens.fx.ini
Silver Raven mods pack data\ENB\enbseries\enbraindrops.png
Silver Raven mods pack data\ENB\d3d11.dll
Silver Raven mods pack data\ENB\d3dcompiler_46e.dll


Да и в принципе, указывать любые отсутствующие файлы по списку не нужно, в случае их нехватки пойдет и что-то, вроде этого:
Код: Выделить весь код
if not exist "%что-угодно из списка%" ( color fc
 echo.
 echo  ╔════════════════════════════════════════════════════════════╗
 echo  ║ Панель управления Silver Raven mods pack версии 1.4.0 BETA ║
 echo  ╚════════════════════════════════════════════════════════════╝
 echo.
 echo.
 echo *ОШИБКА! Некоторые файлы, необходимые для корректной работы программы, не найдены.
 echo Извлеките папку Silver Raven mods pack data из установочных архивов со сборкой в папку игры и перезапустите панель управления. Убедитесь, что антивирусное ПО не блокирует ее работу.
 echo.
 echo. 
pause
exit
)
2. Есть код поиска текстовых строк во внешних файлах. Как его модифицировать для проверки и изменения параметров. Например:

При каждом запуске cmd-шника, в config.cfg проверяется статус строки update_installed, если он = false игнорим и продолжаем свою работу. Если = true, тогда goto :autoupdate
После выполнения кода в :autoupdate, меняем значение update_installed на = false.

Аналогично, возможно ли указывать список файлов для переименования\перемещения\удаления во внешнем файле?

Код: Выделить весь код
cls
del /f /q  *список файлов ищем в config.cfg, в строке autoupdate_files_for_delete = *
popd
)
endlocal
autoupdate_files_for_delete = "Data\SKSE\EngineFixes64.*" "Data\SKSE\EngineFixes64_SNCT.*" "Data\RaceMenuPlugin.*" и т.д. и т.п.

Возможно, я запутанно все описал и это идиотская утопия. И да, я знаю, что такое лучше сделать на чем-нибудь другом, ну тут уж так получилось. Надеюсь на вашу помощь!
З.Ы. На Win XP никто запускать не будет. Доп. извращений не нужно.

Отправлено: 19:47, 21-01-2019

 

Ветеран


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

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


Цитата Stalker_AleX333:
И кстати, без PowerShell-а создать ярлык с атрибутами и указанным путем к отображаемой иконке возможно? »
Возможно. Встроенными средствами — например, на WSH.

Отправлено: 22:32, 30-01-2019 | #31



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

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

Stalker_AleX333


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

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


Iska, как-то так? Но это ж все PowerShell, да?

Код: Выделить весь код
Set WshShell = WScript.CreateObject("WScript.Shell")

Set oShellLink = WshShell.CreateShortcut("%userprofile%\Рабочий стол\The Elder Scrolls V Skyrim - Special Edition.lnk") 

oShellLink.TargetPath = %GameFolder%\skse64.exe

oShellLink.WindowStyle = 7

oShellLink.IconLocation = "%GameFolder%\Silver Raven mods pack data\Silver Raven mods pack ico.ico"

oShellLink.Description = "Запустить The Elder Scrolls V Skyrim - Special Edition"
oShellLink.Save
или так
Код: Выделить весь код
Option Explicit

With WScript.CreateObject("WScript.Shell").CreateShortcut(WScript.CreateObject("Shell.Application").NameSpace("shell:desktop").self.Path & "\The Elder Scrolls V Skyrim - Special Edition.lnk")
	.TargetPath   = "%GameFolder%\skse64.exe"
	.WindowStyle  = 7
	.IconLocation = "%GameFolder%\Silver Raven mods pack data\Silver Raven mods pack ico.ico"
	.Description  = "Запустить The Elder Scrolls V Skyrim - Special Edition"
	.Save
End With

WScript.Quit 0
Надо забить переменную GameFolder, ибо - у каждого пользователя она своя. И вызывать все это дело из SFX архива.

Последний раз редактировалось Stalker_AleX333, 30-01-2019 в 22:53.


Отправлено: 22:42, 30-01-2019 | #32


Ветеран


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

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


Цитата Stalker_AleX333:
Iska, как-то так? »
Близко.

Цитата Stalker_AleX333:
Но это ж все PowerShell, да? »
Нет, WSH.

Цитата Stalker_AleX333:
из SFX архива. »
Чем он создаётся?

Отправлено: 23:21, 30-01-2019 | #33

Stalker_AleX333


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

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


Цитата Iska:
Чем он создаётся? »
WinRAR-ом. С него запустить по окончании распаковки и удалить после выполнения.

Отправлено: 23:38, 30-01-2019 | #34


Ветеран


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

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


Stalker_AleX333, а почему бы тогда не создавать ярлык им же?
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:49, 30-01-2019 | #35

Stalker_AleX333


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

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


Iska, а как он "узнает", по какому пути находится необходимый для запуска ярлыком файл? Пользователь же указывает путь распаковки вручную и там вроде нет команд для его передачи.

Отправлено: 00:51, 31-01-2019 | #36


Ветеран


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

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


Цитата Stalker_AleX333:
Iska, а как он "узнает", по какому пути находится необходимый для запуска ярлыком файл? Пользователь же указывает путь распаковки вручную и там вроде нет команд для его передачи. »
Stalker_AleX333, Вы танцуете от того пути, который будет задан пользователем для установки.

Например, я имею такое содержимое в каталоге C:\Мои проекты\0242:
Код: Выделить весь код
C:\Мои проекты\0242
└───My Programm
        My Programm.exe
— каталог «My Programm» и исполняемый файл «My Programm.exe» (в качестве которого выступает обычный Блокнот) в нём.

Упаковываем его в самораспаковывающийся архив с таким комментарием:
Код: Выделить весь код
;Расположенный ниже комментарий содержит команды SFX-сценария

Path=My Company Name
SavePath
Title=My Programm
Text
{
My Programm installation!
}
Shortcut=P, "My Programm\My Programm.exe", "My Programm", "My Programm Description", "My Programm.lnk"
В результате чего при установке содержимое архива, а именно — каталог «My Programm» с содержащимся в нём файлом будет извлечён либо в умолчальный каталог «%ProgramFiles%\My Company Name», либо в указанный пользователем каталог. И ярлык будет создан именно на тот путь, куда будет извлечён исполняемый файл. Обратите внимание — мы указываем для ярлыка относительный путь («My Programm\My Programm.exe»), который затем WinRAR скомпонует с путём, выбранным для установки.

Последний раз редактировалось Iska, 01-02-2019 в 06:18. Причина: Описка, «ё» → «е».

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:20, 31-01-2019 | #37



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Общее - [статья]OOBE.cmd/SetupComplete.cmd/FirstLogon.cmd alegz81 Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 19 17-04-2018 08:18
CMD/BAT - копирование файлов из одной папки в другую cmd файлом через txt файл Marina_Egorova Скриптовые языки администрирования Windows 1 15-03-2018 22:36
Перестал открываться DVD-шник cahes Оптические приводы 3 18-06-2016 12:24
[решено] Как запустить cmd-шник в окне, которое нельзя закрыть KostyaTax Microsoft Windows NT/2000/2003 6 04-07-2005 18:09
не запускается ехе"шник rivera Хочу все знать 2 20-06-2005 16:51




 
Переход