![自动分别压缩多个文件夹](https://linux22.com/image/1315653/%E8%87%AA%E5%8A%A8%E5%88%86%E5%88%AB%E5%8E%8B%E7%BC%A9%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我的文件夹中有满满的照片
例如
- 假期
- 西班牙
- 法国
- 意大利
- 家庭
- 儿子
- 女儿
- 圣诞节
- 2010
- 2011
... 除了更长... 大约有 100 个文件夹。
我需要单独压缩每个子文件夹(即西班牙、法国、意大利、儿子、女儿等);因此,对于假期类别文件夹,例如,我最终会得到:
- 假期
- 西班牙
- 西班牙.zip
- 法国
- 法国.zip
- 意大利
- 意大利.zip
...等等。(或使用 rar 文件)
如果可能的话,我想避免手动执行此操作,我认为可以使用 WinRar 从命令行执行此操作(尽管如果其他更好的话我也可以使用它)。有人可以给我(并向我简要解释)我将使用的代码以及如何使用它吗?我对命令行了解一点,但我的经验相当有限。
我使用的是 Windows 7
答案1
看看我对类似 SU 问题的回答,标题为“如何使用 7zip 命令行从每个选定目录创建单独的 7z 文件?”。它可以很容易地适应使用不同的命令行 zip/archive 工具,只需更改DO
语句中后面的部分即可。
我个人更喜欢 7-Zip,而不是 WinRAR 和我尝试过的其他几款压缩实用程序。它功能强大、速度快,而且免费。请注意,您的图像文件不太可能被压缩太多,因为根据其格式的性质,它们通常已经使用复杂的面向图像的算法进行压缩,这种算法通常比压缩实用程序中使用的任何通用算法都要好——尽管非免费压缩包程序声称可以进一步将 JPEG 图像文件缩小 20-25%。
答案2
我认为最好自己回答问题,并接受这一点,尽管答案很有帮助(给每个人点赞,而不是挑选一个答案)……这样未来的访客就会得到一个简洁的答案。这是因为我最终从四个答案的组合中得到了结果,所以这是我最终得到的经过测试的解决方案。
我改成了7zip(下载命令行版本并将其放在我的用户文件夹中) 因为它似乎比 Winrar 有更好的命令行操作文档。
然后我创建了一个批处理文件,从我想要压缩其子文件夹的文件夹中运行该文件;并将我从其他答案中得出的以下命令放入其中:
for /d %%i in (*.*) do "c:\users\user\7za" a -tzip "c:\path\to\output\folder\%%i.zip" "%%i"
(我的用户名是“用户”,因此这将根据个人的 Windows 7 用户名进行调整)
我测试了删除各个方面(例如/d 和 -tzip)的命令,但我发现,除非所有方面都到位,否则它无法工作。
我也发现这是一个很好的资源http://www.dotnetperls.com/7-zip-examples
注意:我并不关心文件夹的深度,在我的例子中,所有子文件夹都只比顶级文件夹低一级。此外,这些文件夹仅包含文件,不包含其他文件夹。我怀疑上述代码是否适用于文件夹中包含的文件夹,但我确信它可以轻松适应。
答案3
我不认为这会发生简单的使用批处理文件,但应该是可能的。
Batch 允许你使用 for 循环遍历目录,如下所示:
for /d %%X in (directorySet) do ( command )
/d 是需要指定您将循环遍历目录
%%X 是列表中的目录,
命令是像 'echo "hello"' 这样的运行
来源:http://www.robvanderwoude.com/for.php
这是我所知道的所有可能对你有帮助的东西,你可以用它来代替命令很大程度上取决于您所使用的程序。
在 Powershell 中会更容易,因为它具有更多类似 bash 的符号,并且更加灵活,但使用批处理也完全没问题。
抱歉,我能提供的帮助就这些了,我对批次的了解非常少......