Это внутренний упаковщик zip от Total Commander:
Однако я хочу использовать мой упаковщик 7zip. Когда я выбираю 5 файлов, я получаю 5 отдельных ZIP-архивов для каждого выбранного файла. Как мне это сделать в 7zip?
Это внутренний упаковщик zip от Total Commander:
Однако я хочу использовать мой упаковщик 7zip. Когда я выбираю 5 файлов, я получаю 5 отдельных ZIP-архивов для каждого выбранного файла. Как мне это сделать в 7zip?
Я не уверен, что вы можете делать то, что вы предлагаете, используя графический интерфейс пользователя, но вы, безусловно, можете из командной строки:
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=?
говорит ЗА что я хочу разбить токены на свои ?
- недопустимый символ в именах файлов и каталогов. Я хочу только один токен./B
в DIR
для голого формата - только название/A:D
в DIR
предназначен для ограничения результатов по атрибутам, а D - для каталогов.Если вы хотите инкапсулировать это внутри пакетного файла, единственное изменение, которое вам нужно будет сделать, это дважды экранировать переменную% i:
FOR %%i IN (*.*) DO 7z.exe a "%%~ni.7z" "%%i"
Мне нравится ответ Goyuix. Однако, если вы используете Windows 7 (или у вас установлена Power Shell), а также используете версию 7-zip 7za.exe для командной строки, вы можете запустить эту команду:
dir | ForEach-Object { & "7za.exe" a $_.BaseName $_.Name }
Вы также можете изменить "dir" на «dir * .exe», чтобы выбрать только исполняемые файлы.
Приятной особенностью Power Shell является то, что вы работаете с объектами, а не со строками. Таким образом, вы можете получить действительно конкретную информацию, если хотите. Например:
dir *.csv | ? { $_.Length -lt 18900 -and $_.LastWriteTime -ge [DateTime] "07/01/2011" } | ForEach-Object { & "7za.exe" a $_.BaseName $_.Name }
Это будет включать только файлы, которые:
РЕДАКТИРОВАТЬ Если вы хотите zip-файлы вместо 7-zip-файлов, используйте вместо этого zip.exe InfoZip .
Вы можете скачать и установить плагин 7zip для Total Commander с http://www.ghisler.com/plugins.htm. Как только вы сделаете это в правой части окна на скриншоте, появится еще один вариант сжатия 7zip. С помощью этой опции вы можете выполнить именно то, что вы просите.