我有一个大小为 19 字节的文本文件,并且使用 zip 和 7zip 压缩了该文件,它看起来更大。我读过关于为什么 7zipped 文件比原始文件大的问题?以及为什么 ZIP 压缩不压缩任何东西?但考虑到文件尚未压缩,我希望进一步压缩。附上截图。

编辑0
我通过创建一个包含随机数据的文件来进一步举例,dd if=/dev/urandom of=sample.log bs=1G count=1并尝试使用 zip 和 7zip 压缩文件,但是没有压缩增益。这是为什么?

我在 Windows 7 下使用 7-Zip 来提取各种档案。一直存在的问题是没有一种方法可以处理子文件夹。
有些人像这样创建他们的档案(我们称之为类型A):
.
??? subfolder
? ??? file 1
? ??? file 2
? ??? ...
Run Code Online (Sandbox Code Playgroud)
其他人像这样创建它们(我们称之为B型):
.
??? file1
??? file 2
??? ...
Run Code Online (Sandbox Code Playgroud)
因此,这留下了两个选项:始终选择“提取到 <文件夹>”并使用A 类存档的额外子文件夹。或者在解压缩之前打开存档以检查这是A类型还是B类型,然后适当地选择“在此处提取”或“提取到 <文件夹>”。
我通常做后者,但我刚刚发现 KDE 提供了一个非常方便的Extract Archive Here,Autodetect Subfolder功能可以自动执行此操作。对于 A 类档案,它将“在此处提取”,对于 B 类档案,它将“提取到 <文件夹>”。
我喜欢这个主意。是否有提供此选项的 Windows 7 工具?最好集成在资源管理器上下文菜单中?也许它隐藏在 7-Zip 的某个地方而我只是没有找到?
我正在尝试这个:
7za.exe a "C:\Disc.7z" "C:\test" -v20000000b -m0=BCJ -bd
Run Code Online (Sandbox Code Playgroud)
但是,如果我已经创建了文件,C:\Disc.7z那么 7zip 不会压缩任何内容并向我发送以下输出:
System error:
File already exist.
Run Code Online (Sandbox Code Playgroud)
我试过 switch -y,但 7zip 没有做任何事情......
我怎样才能覆盖文件?
更新
我试过开关,-aoa但它也不起作用......
我想你们都知道:你得到了一个 zip 文件,你不知道它是包含文件夹中的所有文件还是只包含文件。为了不弄乱目录,我从不使用"Extract here"但总是使用"Extract to <Foldername>"(使用 7Zip)。
不幸的是,如果 Zip 文件有一个文件夹,那么总是有两个文件夹,所以我需要将文件向上移动一个目录级别。
有没有办法始终提取到文件夹中但避免重复文件夹,例如\ZipFileName\FolderInZip\?
更新
我正在寻找 ZIP 文件的上下文菜单操作,而不是先打开 ZIP 文件。速度就是一切:-)
假设有 3 个文件夹:
/a/1
/b/1
/c/1
Run Code Online (Sandbox Code Playgroud)
并且任何文件夹都可能包含子文件夹,例如
/a/1/x
/b/1/y
...
Run Code Online (Sandbox Code Playgroud)
如何将包含文件和子文件夹的 /a/1 /b/1 /c/1 文件夹压缩到同一个 7z 文件中并在包中保留路径信息?
我有一个包含大量子文件夹的文件夹,在这些子文件夹中是压缩文件。
我想知道如何将这些文件解压缩到以 zip 文件命名的文件夹中,例如:
C:\Archives\Photos\A.zip
C:\Archives\Videos\B.zip
C:\Archives\Documents\C.zip
Run Code Online (Sandbox Code Playgroud)
会变成
C:\Archives\Photos\A\
C:\Archives\Videos\B\
C:\Archives\Documents\C\
Run Code Online (Sandbox Code Playgroud)
我目前可以执行此操作,但前提是我一次执行一个文件夹,我想知道是否有办法一次完成所有操作,我在想一个 .bat 文件。
我有一个硬盘驱动器,其中包含许多各种内容备份的 ZIP 文件。它们在不同的时间点以不同且不一致的方式进行压缩,其中很多使用最小压缩设置。
有没有办法(最好使用 7zip)使用相同(最佳)压缩设置重新压缩驱动器上的所有 ZIP?
我在这个命令中使用 7zip
tools/7zip/7z.exe a publish/Site.zip publish/Site/*
Run Code Online (Sandbox Code Playgroud)
当我这样做时,7zip 创建一个 zip 文件,其中包含一个发布文件夹,一个站点文件夹,然后是我的文件。
我希望我的 Site 文件夹的内容是我的 zip 文件的根目录。
我怎样才能做到这一点?
我有一个命令,例如"C:\Program Files\7-zip\7z.exe" x foo.7z -y将(使用完整路径)提取到当前目录。
但是,我不希望它做的是将各个路径散布到标准输出。这是我不需要的信息。
但是,在 Windows 上,将其重定向到 NUL(相当于/dev/null在 Linux 上)a la"C:\Program Files\7-zip\7z.exe" x foo.7z -y > NUL不会产生解压缩的文件,因为 7-Zip 似乎解压到 NUL 而不是将命令文本输出推送到 NUL(这是我们想要的) )。
实际上,该命令在 Windows 命令 shell 中工作(也就是说,它根据我的需要解压缩文件,但不将文本记录到控制台),但它不是来自TeamCity 的命令行构建运行程序中的代理执行(即,它会解压到 NUL 中)。
我如何让它在 TeamCity(作为服务执行)中做同样的事情?
我想提取文件夹及其子文件夹中的所有 .zip 和 .rars
结构是这样的:
MAIN_FOLDER
-A folder
- a.zip
-a.rar
-B folder
- b.zip
-b.rar
-C folder
....
...
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个,但没有用
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x %%X
)
popd
)
Run Code Online (Sandbox Code Playgroud)
我使用 Windows 并安装了 7-Zip。
附加问题:是否可以将所有从最后一个子文件(a.rar、b.rar)中提取的文件保存在同一个文件夹(主文件夹)中?
7-zip ×10
windows ×4
compression ×3
batch-file ×2
zip ×2
7za ×1
command-line ×1
extract ×1
redirection ×1
stdout ×1
teamcity ×1
windows-10 ×1
windows-7 ×1