![]() |
Проверка наличия файлов по списку и вызов контекстного действия
Народ, не пойму, правильно ли я сформировал список, проверяемый при запуске этого куска кода:
Код:
set "HDSoundsPackagesENGLocalization="Data\Unofficial HD Audio Project - ENG0.bsa" "Data\Unofficial HD Audio Project - ENG1.bsa" "Data\Unofficial HD Audio Project - ENG2.bsa" "Data\Unofficial HD Audio Project - ENG3.bsa" "Data\Unofficial HD Audio Project - ENG4.bsa"" З.Ы. проверяемые файлы могут быть как из первого, второго, или обоих списков сразу. А действия нужны каждый раз разные. Наверное нихрена не понятно, но я дополню, если потребуется. |
Вы бы описали задачу словами - что нужно, и приложили иерархию тестовых файлов (можно просто пустые txt) в zip.
Разбираться в чужом коде (который, к тому же, не работает), удовольствие, поверьте, сильно ниже среднего. |
Цитата:
Код:
@echo off |
DJ Mogarych, ок, попытаюсь.
У нас имеется два набора файлов (озвучка для игры, упакованная в архивы формата .bsa. Идентичны в названиях и количестве, за исключением окончания ENG\RUS). В первом наборе\пакете - русскоязычная локализация. Во втором - англоязычная. Юзер скачивает и устанавливает себе желаемый пакет (или оба, если хочет менять локализацию "на ходу"), запускаемый батник проверяет какие архивы доступны и на основе этого предлагает выбрать желаемый для подключения (записать те или иные параметры в файлах конфигурации игры). Алгоритм: Какой пакет есть? Русский - call :option_2_install_hd_sounds_packages_rus Английский - call :option_2_install_hd_sounds_packages_eng Есть и то и другое? - call :option_2_install_hd_sounds_packages_eng&rus Ничего не нашли? - call :option_2_install_hd_sounds_packages_error |
upd.
Разобрался. Поиск по списку функционирует, но встала проблема с пробелами в именах файлов. В таком виде он не работает. Не знаю как еще экранировать список. Как пример, так не работает: Код:
set "SoundsPackagesList="Data\pack 1.bsa" "Data\pack 2.bsa" "Data\pack N.bsa"" Код:
set "%SoundsPackagesList%="pack 1.bsa" "pack 2.bsa" "pack N.bsa"" Код:
for %%F in ("%UninstallExclusionFiles%") do if exist "Data\%%~F" attrib +r "Data\%%~F" |
Цитата:
|
iglezz, пока допер только до этого:
Код:
for %%F in (%HDSoundsPackagesENG&RUSLocalization%) do (if exist "Data\%%~F" call :option_2_hd_sounds_packages_change_localization) |
Stalker_AleX333,
Например так
Код:
set "list="file1" "file2" "file3"" Кроме того
Код:
set "HDSoundsPackagesENG&RUSLocalization="Data\Unofficial HD Audio Project - ENG0.bsa" "Data\Unofficial HD Audio Project - ENG1.bsa" "Data\Unofficial HD Audio Project - ENG2.bsa" "Data\Unofficial HD Audio Project - ENG3.bsa" "Data\Unofficial HD Audio Project - ENG4.bsa" "Data\Unofficial HD Audio Project - RUS0.bsa" "Data\Unofficial HD Audio Project - RUS1.bsa" "Data\Unofficial HD Audio Project - RUS2.bsa" "Data\Unofficial HD Audio Project - RUS3.bsa" "Data\Unofficial HD Audio Project - RUS4.bsa"" Код:
set "HDSoundsPackagesENG&RUSLocalization=%HDSoundsPackagesENGLocalization% %HDSoundsPackagesRUSLocalization%" Лучше, пока ещё не поздно, сваливать в сторону PoSh, WSH, Inno, NSIS, ... Порог входа в скриптинг на батниках низкий, но потом, по мере усложнения батника, повылазят особенности этого архаичного интерпретатора, с которыми придётся сражаться вместо написания полезного кода |
Вот, нашел подходящий код и мне помогли "направить" его в нужное русло:
Код:
:: Проверяем наличие HD пакетов англоязычной локализации |
Время: 17:17. |
Время: 17:17.
© OSzone.net 2001-