Может ли кто-нибудь настроить / отредактировать эту пакетную команду, чтобы она отправлялась в корневой каталог каждой папки, прежде чем архивировать ее.

для /d %% X в (*) сделать "c:\Program Files\7-Zip\7z.exe" a "%% X.zip" "%% X\"

в основном у меня много папок, которые я хочу архивировать отдельно. но указанная выше пакетная команда архивирует отдельную папку в корневом / главном каталоге. поэтому их извлечение приведет к двойной папке.

Мне нужно, чтобы это было так. основной каталог с большим количеством папок, затем перейдите к отдельным папкам и заархивируйте их. надеюсь, кто-нибудь поможет.

1 ответ1

0

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

C:\TopDir
├───Dir1
│   └───[Dir1 files]
│
├───Dir2
│   ├───SubDir2.1
│   │   └───[files]
│   │
│   ├───SubDir2.2
│   │   └───[files]
│   │
│   ├───SubDir2.3
│   │   └───[files]
│   │
│   └───[Dir2 files]
│
├───More Dirs...
│  
└───[TopDir files]

Ниже приведено то, что у вас есть после того, как вы запустили соответствующую команду (обратите внимание, что вы не удаляете ни один из файлов, которые вы заархивировали, поэтому они все еще остаются). У вас есть куча ZIP-файлов из процесса архивации в корневой папке (что, как я понимаю, вам не нужно).

C:\TopDir
├───Dir1
│   └───[Dir1 files]
│
├───Dir2
│   ├───SubDir2.1
│   │   └───[files]
│   │
│   ├───SubDir2.2
│   │   └───[files]
│   │
│   ├───SubDir2.3
│   │   └───[files]
│   │
│   └───[Dir2 files]
│
├───More Dirs...
│
├───Dir1.zip
├───Dir2.zip
├───Dirx.zip...
└───[TopDir files]

Если вы извлечете эти файлы Zip из этой же папки (корневой папки), они будут извлечены в существующую структуру каталогов и предложат вам, когда они столкнутся с ситуацией перезаписи файлов. Это не создаст "двойную папку". Я предполагаю под двойной папкой, вы имеете в виду структуру этого типа:

C:\TopDir
├───Dir1
│   ├───[Dir1 files]
│   └───Dir1
│       └───[Dir1 files]

Теперь, если вы переместите zip-файлы в соответствующие папки и разархивируете их, вы получите двойные папки.

Вот команда, которая должна делать то, что я думаю, вы хотите - поместите zip-файл содержимого каждой папки в эту папку:

for /d %%x in (*) do cd %%x && 7z a -tzip -r %%x.zip && cd..

Опция -tzip гарантирует, что файл является файлом .zip, а .7z является форматом 7zip по умолчанию. Так как это в пакетном файле, вы также можете построить его следующим образом:

for /d %%x in (*) do (
  cd %%x
  7z a -tzip -r %%x.zip
  cd..
)

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