Ну, ваше описание желаемых результатов не совсем понятно.
Ниже приведена гипотетическая схема дерева каталогов.
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..
)