Где-то в прошлой ветке пробегало предложение по доработке скрипта, чтоб можно было выборочно конфигурить набор дополнений.
Сделал подобную доработку - работает это так:
запускаем "__PATCH.CMD Confugure <название>"
1 проверяется наличие каталога Configs - если отосутствует - создается
2 проверяется наличие файла Configs/<название>
если отосутствует - создается, в него копируется спиок всех установленных дополнений
если такой файл есть - проверяется наличие указаных в нем дополнений
3 далее скрипт работает как обычно
Дополнительно создается переменная !Configure! в которую помещается название конфигурации.
И еще маленький бонус - дополнения накладываются на дистрибутив в том порядке в каком они идут в файле.
Код:
![Выделить весь код](images/misc/selectcode.png)
If "%~1"=="" (
Set Configure=
GoTo :MakeAddonsList
) Else If /I "%~1"=="Configure" (
Set Configure=%~2
If "!Configure!"=="" (
Call :Quit "Ошибка: Необходимо ввести название конфигурации."
)
:MakeAddonsList
Set SeparateAddons=
Echo .>Temp\Folders.txt
If Exist Addons\*.* (
For /F "UseBackQ Delims=" %%I In (`Dir Addons /AD /B /ON 2^>nul`) Do (
Echo Addons\%%~I>>Temp\Folders.txt
)
)
If Not "!Configure!"=="" (
If Not Exist Configs MD Configs
If Not Exist "Configs\!Configure!" (
Type Temp\Folders.txt>"Configs\!Configure!"
Call :Quit "Создан файл конфигурации: !Configure!"
)
Echo Сборка конфигурации !Configure!
Rem Проверить наличие входящих в конфигурацию аддонов
Set AddonsNoFound=
For /F "UseBackQ Delims=" %%I In ("Configs\!Configure!") Do (
Set AddonFound=
For /F "UseBackQ Delims=" %%J In (`Find /I "%%I" Temp\Folders.txt`) Do (
If "%%I"=="%%J" Set AddonFound=%%I
)
If "!AddonFound!"=="" (
Echo Ошибка: дополнение %%I не найдено.
Set AddonsNoFound=1
)
)
If "!AddonsNoFound!"=="1" Call :Quit
Rem Собираем конфигурацию
Type "Configs\!Configure!">Temp\Folders.txt
Set AddonFound=
)
) Else (
Set SeparateAddons=1
:NextParam
If Not "%~1"=="" (
If Exist "Addons\%~1\*.*" (
Echo Addons\%~1>>Temp\Folders.txt
) Else (
Call :Quit "Ошибка: дополнение %~1 не найдено."
)
Shift
GoTo :NextParam
)
)