1
FOR %i IN (*.*) DO 7z.exe a "%~ni.7z" "%i"

Выполняет работу для каждого выбранного файла.

Однако у меня есть тонны каталогов (с файлами внутри них, очевидно), мне нужно упаковать.

Допустим, у меня есть d:\dir1, d:\dir2, d:\dir3, d:\dir4. Мне нужно 7zip, чтобы упаковать их таким образом:

e:\dir1.7z, e:\dir2.7z, e:\dir3.7z, e:\dir4.7z.

Как мне это сделать в командной строке 7zip?

2 ответа2

2

Из командной строки вы можете использовать что-то вроде:

FOR /D %i IN (d:\dir*.) DO 7z.exe a "e:\%~ni.7z" "%i"

В командном файле вам понадобится:

FOR /D %%i IN (d:\dir*.) DO 7z.exe a "e:\%%~ni.7z" "%%i"

Кстати, вы можете найти справку по команде FOR , набрав:

help for

в командной строке.

Обратите внимание, что 7-zip имеет отдельную версию командной строки под названием 7za.exe вы, вероятно, захотите использовать вместо 7z.exe . Он находится в отдельном файле .zip для загрузки под названием «7-Zip Command Line Version», который вы можете найти на странице загрузки 7-Zip .

1

Если у вас есть тонны каталогов, использование подстановочных знаков может привести к некоторым системным ограничениям.

Используя Cygwin или другие инструменты Unix для Windows в качестве UnxUtils, вы можете использовать команду Unix 'find' следующим образом:

cd <source directory>
find . -mindepth 1 -maxdepth 1 -type d -exec 7za a /<destination directory>/{}.7z {} \;

'-mindepth' важно, чтобы текущий каталог не возвращался командой 'find'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .