自动分别压缩多个文件夹

自动分别压缩多个文件夹

我的文件夹中有满满的照片

例如

  • 假期
    • 西班牙
    • 法国
    • 意大利
  • 家庭
    • 儿子
    • 女儿
  • 圣诞节
    • 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 的符号,并且更加灵活,但使用批处理也完全没问题。

抱歉,我能提供的帮助就这些了,我对批次的了解非常少......

答案4

我手边没有 Windows 系统来编写你的命令,
但这里有一个粗略的列表,

  • 您可以使用dir 命令在一个for 循环(或者,也许你需要更新的手册页)
  • 将您的列表限制dir在深度=1 的目录中
    • /A:D Folder转变 (?)
    • 某种不递归的方法或使用深度==1(我现在已经忘记了 Windows 批处理文件)
  • 查看7z
  • 如果你经常使用 Windows 脚本,请检查电源外壳

相关内容