你们能告诉我如何将指定的文件压缩到同一个 Zip 文件中吗?让我告诉我我的文件夹是如何填充的:

  • 任务调度程序有我的数据库的备份,并每天将它们保存到文件中。它每天创建 4 个数据库备份,这意味着每天会多出 4 个文件。因此,我需要将新创建的备份压缩到同一个 zip 文件中(当然它与前一天的 zip 文件不同,将为当天新创建的备份文件创建 zip 文件),并且我需要自动执行此操作。好吧,我知道如何让它自动化。我可以使用 Windows 任务计划程序来自动化操作。

谢谢。

有帮助吗?

解决方案

你可以这样做 点网压缩 - 它最初是作为一个供程序员使用的库而生成的,但是构建在该库上并随该库一起提供的示例应用程序本身就变得非常有用。

其中一个“示例”称为 zipit.exe - 一个控制台工具。指定一个不存在的 zip 文件来创建新文件,或指定一个现有的 zip 文件来更新它。

zipit.exe ZipArchive.zip  c:\data\folder1

您可以指定一个或多个文件名、目录或描述要包含哪些文件的逻辑表达式。对于表达式:

  • name = *.jpg
    任何 .jpg 文件。

  • mtime > 07/01/2009
    任何带有 最后修改时间 2009 年 7 月 1 日午夜之后。还有ctime和atime分别表示创建时间和访问时间。

  • ctime > 07/01/2009:07:53:00
    任何带有 创建时间 2009 年 7 月 1 日上午 7:53 后。

  • size > 320mb
    任何大小超过 320mb 的文件。您可以使用 知识库 或者 国标, , 也。或者省略字节大小的字符。您可以使用 < 或 = 作为操作。

  • attr != H
    任何未设置隐藏属性的文件。其他属性包括 S=系统、R=只读、A=存档。当然,您也可以测试该属性是否为 ON(使用 = 而不是 !=)。

  • attr != H and size > 320mb
    包括满足这两个条件的文件。您还可以使用 OR 作为连词。使用括号对复杂表达式进行分组。

  • name = *.jpg or name = *.gif
    包括满足一个或另一个条件的文件。

  • (name = *.jpg) or (name = *.gif)
    与上面相同。

  • (mtime >= 07/01/2009) and (mtime < 07/02/2009)
    7 月 1 日修改的任何文件。从午夜到午夜。

  • (name = *.jpg) AND (mtime >= 07/01/2009) and (mtime < 07/02/2009)
    7 月 1 日修改的任何 .jpg 文件。

  • (name = *.jpg) and (size >= 100kb) and (mtime >= 07/01/2009) and (mtime < 07/02/2009)
    任何 .jpg 文件,大小为 100kb 或以上,且于 7 月 1 日修改。

使用 zipit.exe 工具上的其他选项,您还可以:

  • 指定是否要遍历重分析点(如符号链接或连接点,例如“我的音乐”)。
  • 是否递归目录(默认为不)
  • 使用 AES 或“常规”zip 加密来加密 zip
  • 指定分段大小以生成跨区或分段 zip 文件。
  • 生成自解压存档

例子:

zipit.exe Archive.zip -D c:\project1 -r+ "(name = *.xlsx) and (mtime >= 07/01/2009) and (mtime < 07/31/2009)"

  • 生成一个文件 Archive.zip,其中包含 c:\project1 目录层次结构中所有 7 月修改的 .xslx 文件。

zipit.exe Unpack.exe -sfx w -D project2 -r+ "(name = *.pdf) and (size > 100kb)"

  • 生成一个名为 Unpack.exe 的自解压 GUI exe,其中包含 project2 目录层次结构中大小超过 100k 的所有 .pdf 文件。

DotNetZip 是免费的。

所有这些功能也可在该库的 .NET 界面中使用。还有一个 GUI 工具。

其他提示

我使用开源程序 7Zip 使用如下命令行:

"C:\Program Files\7-Zip\7z.exe" a My.zip MyFileOrFolder

如果您使用的是 NTFS 分区,让 Windows 自动压缩备份文件所在的文件夹也可能会解决您的问题(右键单击您的文件夹,选择“属性”、“高级”,然后单击“压缩内容以保护数据”)。

我已经放弃了 WinZip,转而使用 7-拉链 因为它快速、免费、高效,并且适用于 Windows 和 Linux。

如果您是 WinZip 粉丝,请查看 WinZip 命令行支持插件: http://winzip.com/prodpagecl.htm

您可以归档 Windows 命令行允许的任意数量的文件或目录:

wzzip archive.zip dir1 dir2 dir3 ...

您可以在以下位置下载适用于 Windows 的 GNU zip: http://gnuwin32.sourceforge.net/packages/zip.htm. 。如果你想获得整个 UNIX 命令行路径,可以使用 zip http://www.cygwin.com/.

手册页提供了这个示例,似乎可以解决您的问题,还有许多其他命令行选项:

例如,如果foo.zip存在并包含foo/file1和foo/file2,并且目录foo包含file foo/file1和foo/file3,则:

      zip -r foo.zip foo

或者更简洁地

      zip -r foo foo

将替换 foo.zip 中的 foo/file1 并将 foo/file3 添加到 foo.zip 中。之后,foo.zip包含foo/file1,foo/file2和foo/file3,而foo/file2从之前没有变化。

查看一个名为 PKZIP 的旧程序。我相信您也可以使用 WinZip 和 7Zip 来做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top