我拍了一堆照片,必须把它们剪裁成 800x600 像素。这很容易做到,但现在我必须上传它们,这样家人才能看到它们。
问题是,这些图片有 500MB。我决定简单地压缩单独的文件夹,每个文件夹包含几乎相同数量的图片。这样我每天可以上传几张。手动执行这项工作是一项非常漫长而艰巨的工作。我想知道是否有办法让 7-zip 单独处理每个文件夹?
我想我需要一个批处理文件来做这件事,但我不擅长。我把所有东西都放在一个文件夹下。图片位于各个子文件夹中。我需要的是压缩该文件夹的内容。我不确定我是否可以将文件夹与它一起压缩。我知道 PHP 有一个 zip 模块,但我从未使用过它,所以我不确定它是否可以处理 zip 的内容是一个包含项目的文件夹,而不仅仅是项目的事实。
答案1
从以您的目录为工作目录的命令提示符运行My Pictures
,此命令将创建每个子目录内容的 zip 文件,并将所有 zip 文件保留在您的My Pictures
目录中。
编辑:我添加了必要的引号,以允许目录名称中带有空格。
for /D %%d in (*.*) do 7z a -tzip "%%d.zip" "%%d"
还:以下版本不会将文件放在 zip 文件内的子目录中,而是放在其根目录中:
for /D %%d in (*.*) do 7z a -tzip "%%d.zip" ".\%%d\*"
在 Windows 7 及更高版本中
for /D %d in (*.*) do 7z a -tzip "%d.zip" "%d"
或者
for /D %d in (*.*) do 7z a -tzip "%d.zip" ".\%d\*"
答案2
我无法让命令行工作,所以我下载了 WinRAR 并姆托内是正确的 - WinRAR 确实有一个选项可以将多个文件夹压缩成各自单独的 ZIP 文件。
例如C:\Files\Fables 01
进入C:\Files\Fables 01.zip
,和C:\Files\Fables 02
进入C:\Files\Fables 02.zip
。
使用 WinRAR,打开包含要压缩的文件夹的文件夹,然后按照以下步骤操作:
- 选择所有要压缩/解压的文件夹
- 单击“添加”或Alt+A或命令 -> “将文件添加到存档”
- 选择 RAR 或 ZIP
- 转到“文件”选项卡
- 勾选“存档”框下的“将每个文件放入单独的存档”
当您修复了其他任何所需的设置后,点击“确定”,然后:多个文件夹的多个 ZIP 文件。这比命令行 7zip 简单多了。
答案3
只是对 eleven81 的答案进行了稍微的更新:下面的代码创建了一个批处理文件,可以将多个项目放入其中。
@echo off
if [%1]==[] goto :eof
:loop
7z a -tzip "%~1.zip" "%~1"
shift
if not [%1]==[] goto loop
然后可以通过注册表将该批处理文件添加到上下文菜单中:
- 在[HKEY_CLASSES_ROOT\Folder\shell]下创建一个新键,命名为cmd1
- 编辑字符串值并将其命名为“Batch Zip”
- 在此之下创建另一个新键并将其命名为命令
- 将其值更改为您的路径,并使用双斜杠
例如,我的条目是“C:\Users\Rory\Dropbox\_apps\batch_zip.bat” “%1”
完成此操作后,您的上下文菜单中将出现“批量压缩”条目,该条目会将选定的任何文件夹批量压缩到单独的存档中
但是,如果您通过上下文菜单执行此操作,不幸的是它将同时运行所有操作,并且任何做过大量压缩和解压缩的人都知道,压缩文件夹比一次压缩要快得多。
如果有人知道如何在注册表中修复此问题,请告知。
将选定的文件夹拖到批处理上将会依次执行它们。
答案4
提示:如果您的图像是 JPG,它们已经被压缩。在“存档”模式下使用 7-Zip 而不进行压缩(压缩级别:存储),这将极大地加快该过程。
即使使用超级压缩,也几乎不会获得 5% 的压缩效果,当然不值得付出努力。
我正在考虑实际添加附件。
我不会将它们作为电子邮件附件发送。而是将它们上传到所谓的一键托管服务器(例如 drop.io、rs、mu、ms 等,选择很多),然后通过电子邮件将下载链接发送给您的朋友和家人。