我正在尝试单独压缩文件,但文件类型未知

我正在尝试单独压缩文件,但文件类型未知

我正在尝试单独压缩一些文件类型未知的文件。我在批处理脚本中使用以下代码来执行此操作:

@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"

仅当文件具有扩展名时,代码才会单独压缩文件。不幸的是,我拥有的文件没有任何扩展名。在代码中,我尝试通过执行模式匹配来压缩文件,文件被压缩为一个文件(我不想要,我希望每个文件单独压缩)。

为什么当文件具有扩展名时(例如,如果我在文件末尾添加 .txt),此代码会创建单独的 zip 文件,而当没有扩展名时,代码会创建一个压缩文件。

有人能帮我用代码压缩未知文件类型的文件吗,以便每个文件单独压缩

非常感谢您的帮助。

答案1

你可能被误导了7z 帮助文件备选网址)他写作的地方

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 版权所有 (c) 1999-2009 Igor Pavlov 2009-02-03
扫描
创建档案 7ziptest_1.7z
压缩 7ziptest_1.txt
一切都好
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 版权所有 (c) 1999-2009 Igor Pavlov 2009-02-03
扫描
创建档案 7ziptest_2.7z
压缩 7ziptest_2.txt
一切都好
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 版权所有 (c) 1999-2009 Igor Pavlov 2009-02-03
扫描
创建档案 7ziptest_3.7z
压缩 7ziptest_3
一切都好

相关内容