Вопрос: Пакетный файл для 7zipping всех папок в .7z каталогов (вложенная папка отсутствует!)


Мне жаль, что это, вероятно, было задано несколько раз раньше, но я разрываю волосы, пытаясь исправить свой пакетный код, и я не могу найти конкретный ответ, который я могу использовать для исправления собственного кода. У меня есть куча папок, в которые я хочу загрузить «7z» в .7z папки. Мне не нужна папка .7z с каталогом внутри, я хочу содержимое папки непосредственно внутри .7z. Пока у меня есть:

for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\"

Но он нуждается в настройке, поскольку я все еще вижу подкаталоги, когда я смотрю в 7z.

Большое спасибо!!!


2
2018-06-25 17:06


Источник


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


Ответы:


Единственный способ, с помощью которого я могу удержать 7z, - это сжать текущую папку.
Кажется, существует ошибка при использовании опции -o для определения выходной папки на один уровень вверх (она все же создает 7z в текущей папке).
Обход - это шаг в каждую папку для сжатия, а затем перемещение 7z-файла на один уровень вверх:

:: Flat7z.cmd
@Echo off
for /d %%X in (*) do (
    echo processing folder "%%~fX"
    Pushd "%%~fX"
    "c:\Program Files\7-Zip\7z.exe" a "%%~nxX.7z" *
    Move "%%~nxX.7z" ..
    PopD
)

Дерево образцов A: \ before

> tree A:\ /F
A:\
└───test
    │   Flat7z.cmd
    ├───a
    │       File1.txt
    │       File2.txt
    └───b
            File3.txt
            File4.txt

и после запуска партии:

> tree A:\ /F
A:\
└───test
    │   a.7z
    │   b.7z
    │   Flat7z.cmd
    ├───a
    │       File1.txt
    │       File2.txt
    └───b
            File3.txt
            File4.txt

И (укороченный) 7z l *.7z вывод

Listing archive: a.7z
   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2018-06-25 19:37:39 ....A            6           16  File1.txt
2018-06-25 19:37:43 ....A            6               File2.txt
------------------- ----- ------------ ------------  ------------------------
2018-06-25 19:37:43                 12           16  2 files

Listing archive: b.7z

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2018-06-25 19:37:39 ....A            6           16  File3.txt
2018-06-25 19:37:43 ....A            6               File4.txt
------------------- ----- ------------ ------------  ------------------------
2018-06-25 19:37:43                 12           16  2 files

------------------- ----- ------------ ------------  ------------------------
2018-06-25 19:37:43                 24           32  4 files

Archives: 2
Volumes: 2
Total archives size: 358

2
2018-06-25 18:29





Что я искал:

for /D %%d in (*.*) do "C:\Program Files\7-Zip\7z.exe" a -tzip "%%d.zip" ".\%%d\*"

-1
2018-06-25 18:59