Линейная версия 7zip cmd: как заархивировать каждый файл в отдельный архив из пакетного файла

У меня есть следующая команда:

for %f in (*.txt) do "C:\WINDOWS\7za.exe" a -t7z "%f.7z" "%f"

который я отправляю в cmdprompt из сценария vba. Это работает, но теперь мне нужно указать путь к папке, в которой нужно выполнить архивирование. Я сделаю это:

for %f in (usebackq "C:\Bob\WithBlank\NeuerOrdner3\" *.txt) do "C:\WINDOWS\7za.exe" a -t7z "%f.7z" "%f"

Почему я получаю один zip-файл, содержащий все *.txt-файлы, а не один zip-архив для каждого txt-файла?


person Lumpi    schedule 22.02.2013    source источник


Ответы (2)


Я не знаю, почему ваша вторая командная строка помещает все файлы в один архив, но usebackq не принадлежит скобкам. Это должно работать:

for %f in ("C:\Bob\WithBlank\NeuerOrdner3\*.txt") do (
  "C:\WINDOWS\7za.exe" a -t7z "%~dpnf.7z" "%~ff"
)
person Ansgar Wiechers    schedule 22.02.2013
comment
Пробовал, просто ничего не происходит. Нет даже сообщения об ошибке? - person Lumpi; 22.02.2013
comment
Когда я пробую это в powershell, я получаю сообщение «Отсутствует открытие» («(» после ключевого слова «для». Почему! - person Lumpi; 22.02.2013
comment
@Lumpi Потому что CMD — это не PowerShell. Если вы запустили мой код в CMD и он вообще ничего не сделал, то либо ваш путь не существует, либо он не содержит файлов .txt. - person Ansgar Wiechers; 22.02.2013

Запустите его из файла .BAT:

for %%a in (*.xml) do "\Program Files\7-Zip\7z.exe" a "%%~na.7z" "%%a"

7z файл будет иметь то же имя, что и исходный файл

person Брайков    schedule 29.08.2020