Вот скрипт для этого (пропустите комментарии "//", которые показаны для пояснения):
@echo off
for /D %%G IN (*) DO (
//This is my path to 7-Zip, it could be different for you
cd c:\program files\7-zip
//This is the dir of the parent folder in which you want the subfolders to be zipped individually.
7z a -t7z c:\users\user\desktop\folder\%%G.7z c:\users\user\desktop\folder\%%G -r )
pause
-t7z - это используемый формат архива .7z.
Чтобы использовать скрипт:
При написании сценария предполагается, что у вас есть родительская папка с подкаталогом, который вы хотите сжать индивидуально (каждый подкаталог в своем собственном zip-архиве).
Визуальное представление:
----Parent Directory
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
Лерс говорит, что подкаталоги, которые вы хотите сжать, находятся в C:\Users\Foo\Documents
. Так это будет выглядеть так:
----C:\Users\Foo\Documents
--------Foo1
--------Foo2
--------Foo3
--------Foo4
--------Foo5
В приведенном мною сценарии вы должны отредактировать строку:
7z a -t7z c:\users\user\desktop\folder\%%G.7z c:\users\user\desktop\folder\%%G -r )
сказать:
7z a -t7z c:\Users\Foo\Documents\%%G.7z c:\Users\Foo\Documents\%%G -r )
Итак, теперь мы должны установить расположение 7z.exe, чтобы скрипт мог работать правильно.
ПРИМЕЧАНИЕ. Вам не нужно этого делать, если вам удалось установить переменную среды для 7z.exe. Для тех, кто преуспевает, опустите строку cd c:\program files\7-zip
. Чтобы проверить, работает ли он или нет, просто откройте cmd.exe
и введите 7z
, если вы получите список опций и параметров, то он сработал, а если нет, то продолжайте с командой cd
.
Найдите, где вы установили 7-Zip и скопируйте каталог и добавьте его после cd
. В этом примере он будет установлен в C:\Program Files\7-Zip
. Таким образом, готовый скрипт будет выглядеть так:
@echo off
for /D %%G IN (*) DO (
cd C:\Program Files\7-Zip
7z a -t7z c:\Users\Foo\Documents\%%G.7z c:\Users\Foo\Documents\%%G -r )
pause
Теперь сохраните сценарий как расширение файла .bat
, если вы используете блокнот, вы должны изменить « Save as Type
для All Files (".")
.
Если написано правильно, конечный результат должен выглядеть так:
ПРИМЕЧАНИЕ. Если у вас есть папки, в которых есть пробелы, имя не будет выводиться целиком, но там, где перед пробелом будет первое слово. Пример: Foo 1
будет заархивирован как Foo.7z
(без bueno). То же самое с несколькими папками с первым словом как Foo
и Foo 1
, они оба сталкиваются с последней проблемой, которую я объяснил, и когда Foo
впервые архивируется, архив для Foo 1
будет пытаться перезаписать Foo
, потому что они имеют одинаковые название. Если вы можете найти работу вокруг этого, слава вам!
Вы также можете попробовать версию моего скрипта Тайлера, конечно, он более "универсально совместим" и предполагает наличие 7z.exe
в качестве EV (Переменная окружающей среды).