如何使用命令行压缩指定的文件夹

Tar*_*rik 2 .net windows backup zip command-line

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

  • 任务计划程序备份我的数据库并每天将它们保存到文件中.它每天创建4个数据库备份,这意味着每天将有4个文件.所以我需要将新创建的备份压缩到相同的zip文件中(当然它与前一天的zip文件不同,zip文件将在当天为新创建的备份文件创建),我需要自动完成.我知道如何使它自动化.我可以使用Windows任务调度程序来自动执行任务.

谢谢.

Eri*_* J. 11

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

"C:\Program Files\7-Zip\7z.exe" a My.zip MyFileOrFolder
Run Code Online (Sandbox Code Playgroud)

如果您正在使用NTFS分区,它还可以解决您的问题,让Windows自动压缩备份文件所在的文件夹(右键单击您的文件夹,选择"属性","高级",然后单击"压缩内容以保护数据").

  • 很好的答案,但是从7z.exe开始使用同一个包中的7za.exe可能稍微好些,因为7z.exe使用了安装它的文件夹中的其他文件,而7za.exe可以独立工作,而不需要查看PATH变量来查找剩余的文件 (3认同)

Che*_*eso 5

你可以使用DotNetZip来实现它- 它最初是作为一个供程序员使用的库而生成的,但是在库中构建和随附的示例应用程序本身已经变得非常有用.

其中一个"样本"称为zipit.exe - 一个控制台工具.指定不存在的zipfile以创建新的zipfile,或指定现有的zipfile来更新它.

zipit.exe ZipArchive.zip  c:\data\folder1
Run Code Online (Sandbox Code Playgroud)

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

  • 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的文件.你也可以使用kbgb.或者省略字节大小的字符.您可以使用<或=作为操作.

  • attr != H
    任何没有Hidden属性集的文件.其他属性包括S = system,R = Readonly,A = Archive.当然,您也可以测试该属性是否为ON(使用=而不是!=).

  • attr != H and size > 320mb
    包括满足这两个条件的文件.您也可以使用OR作为结合.使用parens对复杂表达式进行分组.

  • 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工具上的其他选项,您还可以:

  • 指定是否要遍历重新分析点(例如符号链接或交汇点,例如"我的音乐").
  • 是否递归目录(默认为NOT)
  • 使用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,该文件包含在7月修改的c:\ project1目录层次结构中的所有.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工具.