Я не уверен, что вы можете делать то, что вы предлагаете, используя графический интерфейс пользователя, но вы, безусловно, можете из командной строки:
FOR %i IN (*.*) DO 7z.exe a "%~ni.7z" "%i"
Вам нужно сначала сменить каталог ( cd
команду) на F:\Downloads
каталог или любой другой каталог, который вы хотите выполнить массовое сжатие. Также достаточно просто заменить * .exe или любое другое расширение, по которому вы хотите фильтровать, чтобы просто сжать эти документы.
И секретный декодер звонит:
%i
переменная, которая содержит имя файла для каждого шага в цикле(*.*)
это критерии выбора, это может быть просто * .exe или аналогичный7z.exe
версия командной строки 7-Zip%~ni
- это расширяет переменную% i только до имени файла - без расширения
Если вы хотите просто добавить папки для данного каталога, команда немного сложнее, поскольку по умолчанию FOR просто работает с файлами. Нам нужно предоставить ему дополнительную информацию:
FOR /F "usebackq delims=?" %i IN (`DIR /B /A:D`) DO 7z.exe a "%i.7z" "%i"
Это работает из-за нескольких частей того, что кажется магией:
/F
говорит FOR перебирать расширенное значение в ()usebackq
говорит FOR, что я собираюсь передать команду и использовать вывод для итерацииdelims=?
говорит FOR, что я хочу разбить токены на?
- недопустимый символ в именах файлов и каталогах. Я хочу только один токен./B
ВDIR
для голого формата - только имя/A:D
ВDIR
для ограничения результатов по атрибуту, то D для каталогов
Если вы хотите инкапсулировать это внутри пакетного файла, единственное изменение, которое вам нужно будет сделать, это дважды экранировать переменную% i:
FOR %%i IN (*.*) DO 7z.exe a "%%~ni.7z" "%%i"