Що ж, ваш опис бажаних результатів не зовсім зрозумілий. Нижче представлений гіпотетичний макет дерева директорій.
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-файл вмісту кожної папки у цю папку:
for /d %%x in (*) do cd %%x && 7z a -tzip -r %%x.zip && cd..
Ця -tzip
опція гарантує, що файл .zip-файл, .7z - zip-формат за замовчуванням 7zip. Оскільки це знаходиться в пакетному файлі, ви також можете його сконструювати так:
for /d %%x in (*) do (
cd %%x
7z a -tzip -r %%x.zip
cd..
)