7Zip 更好的策略,通过命令行将一个文件压缩到一个 7z 文件中

Posted

技术标签:

【中文标题】7Zip 更好的策略,通过命令行将一个文件压缩到一个 7z 文件中【英文标题】:7Zip better strategy to compress one file in one 7z file by command line 【发布时间】:2021-06-29 06:07:30 【问题描述】:

我写了一个 Windows 批处理文件来压缩他们文件夹中的原始文件并删除原始文件,它工作正常:

@echo off
for /f %%x in ('dir /A:-d /s /b /ad') do (
    cd %%x
    for /f %%f in ('dir /A:-d /s /b') do (
        echo %%f
        7z.exe a -sdel -xr!*.7z "%%f.7z" "%%f"
    )
    cd ..
)

有没有更简洁的方法来完成这项任务?

我有这个文件夹结构:

c:\
\---joe
    +---a
    |      test1.txt
    |      test2.txt
    |
    +---b
    |      test3.txt
    |
    \---c
           test4.txt

我希望的结果是:

c:\
\---joe
    +---a
    |      test1.txt.7z
    |      test2.txt.7z
    |
    +---b
    |      test3.txt.7z
    |
    \---c
           test4.txt.7z

【问题讨论】:

一行应该可以:for /r "C:\joe" %%a in (*.txt) do 7z.exe a -sdel -xr!*.7z "%%f.7z" "%%a" @Stephan:您好,亲爱的,感谢您的回复,但不起作用。已在根目录下创建了一个新的 7z 文件,其中包含第一个文件夹 (a) 的两个文件,另外两个丢失了。 只是好奇你是否知道这是在做什么,如果你知道为什么要这样编码? dir /A:-d /s /b /ad @Squashman:第一个用于获取所有子目录(普通),第二个在当前子目录上应用 dire 以获取所有文件 @JoeTaras,您注意到 Stephans 代码中的错字了吗?由于它现在只使用一个FOR 命令,因此必须更改其中之一:"%%f.7z" "%%a" 【参考方案1】:

单行应该可以:

for /r "C:\joe" %%a in (*.txt) do 7z.exe a -sdel -xr!*.7z "%%a.7z" "%%a"

for /r "startfolder" 定义递归搜索的起始文件夹。

如果7z.exe 不在%PATH% 或当前目录中,请不要忘记提供路径。

【讨论】:

以上是关于7Zip 更好的策略,通过命令行将一个文件压缩到一个 7z 文件中的主要内容,如果未能解决你的问题,请参考以下文章

使用7zip压解各种文件的经常使用命令

使用7zip,通过命令行解压包内指定文件

使用7zip,通过命令行解压包内指定文件

windows 下借助7zip实现命令行解压缩

7zip 正在压缩源路径/空变量

通过7zip压缩备份文件bat