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

@ECHO OFF 
FOR %%A IN (bestbuy*nat*component.cpi*) DO "C:\Program Files\7-Zip\7z.exe" a -mx9 -m0=lzma2:d256m "%%~nA.7z" "%%A"

Код будет сжимать файлы индивидуально, только если файл имеет расширение. К сожалению, файлы, которые у меня есть, не имеют расширения. В коде, который я пытаюсь заархивировать, выполняя сопоставление с образцом, файлы сжимаются в ОДИН файл (который я не хочу, я хочу, чтобы каждый файл сжимался отдельно).

Почему этот код создает отдельные zip-файлы, когда файлы имеют расширение (например, если я добавляю .txt в конец файлов) и когда нет расширения, код создает один zip-файл.

Может кто-нибудь, пожалуйста, помогите мне с кодом для сжатия файлов с неизвестным типом файла, чтобы каждый файл был сжат в индивидуальном порядке

Ваша помощь будет принята с благодарностью.

1 ответ1

1

Вы могли быть введены в заблуждение файлом справки 7z (альтернативный URL), где он пишет

7-Zip не использует системный анализатор подстановочных знаков. 7-Zip не следует архаичному правилу, согласно которому *. * Означает любой файл. 7-Zip рассматривает *. * Как совпадающее с именем любого файла с расширением. Для обработки всех файлов вы должны использовать подстановочный знак *.

На данный момент в вашем пакетном файле, где вы предоставляете параметры шаблона, 7z.exe не участвует. В системе Windows командная строка должна выглядеть так:

FOR %%A IN (bestbuy*nat*component*)  DO "C:\Program Files\7-Zip\7z.exe" a –mx9   –m0=lzma:d=256m "%%~nA.7z" "%%A"

Я изменил параметр –m0 как он не соответствует моим спецификациям в версии, которую я использую. После этих небольших изменений у меня все работает нормально.

Обновить:

Вот вывод из моей тестовой среды:

C:\Temp> 7zip.bat
C:\Temp> FOR %A IN (7*test*) DO "C:\Program Files\7-Zip\7z.exe" a -mx9 -m0=lzma:d=256m %~nA.7z %A
C:\Temp> "C:\Program Files\7-Zip\7z.exe" a -mx9 -m0=lzma:d=256m 7ziptest_1.7z 7ziptest_1.txt
7-Zip [64] 4.65  Copyright (c) 1999-2009 Igor Pavlov  2009-02-03
Scanning
Creating archive 7ziptest_1.7z
Compressing  7ziptest_1.txt
Everything is Ok
C:\Temp> "C:\Program Files\7-Zip\7z.exe" a -mx9 -m0=lzma:d=256m 7ziptest_2.7z 7ziptest_2.txt
7-Zip [64] 4.65  Copyright (c) 1999-2009 Igor Pavlov  2009-02-03
Scanning
Creating archive 7ziptest_2.7z
Compressing  7ziptest_2.txt
Everything is Ok
C:\Temp> "C:\Program Files\7-Zip\7z.exe" a -mx9 -m0=lzma:d=256m 7ziptest_3.7z 7ziptest_3
7-Zip [64] 4.65  Copyright (c) 1999-2009 Igor Pavlov  2009-02-03
Scanning
Creating archive 7ziptest_3.7z
Compressing  7ziptest_3
Everything is Ok

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