最近在自动化的过程中用到了7z命令行工具,发现其参数中的路径挺有意思的,在此总结一下。本文中所有demo使用的7z版本为:15.14 x64。

压缩某个文件夹

下面的命令会把g:\temp\目录和目录下的所有文件打包到压缩文件abc.zip中。

7z.exe a abc.zip g:\temp\

注意,此时压缩包中是包含temp目录的。

当我们解压缩abc.zip文件时就会发生一件比较有趣的事。无论通过右键菜单中windows提供的”Extract All…”还是7z提供的”Extract files…”,默认都会给解压缩的文件添加一级目录即abc。

多出的这级目录可能是我们想要的,可能不是。如果不是,我们可以在上面的UI界面中把它去掉。

或者你可以使用命令行解压它:

7z.exe x abc.zip –og:\

你能相信吗,解压出来的文件路径中并没有abc这级目录!

压缩某个文件夹下的所有文件

由于通过UI解压缩时默认会生成一级以压缩文件名命名的目录,为了在解压后不改变目录树的结构。我们可以考虑在压缩时,只添加根目录下的所有文件而不添加根目录,然后以根目录的名称命名压缩文件。

7z.exe a g:\temp.zip g:\temp\*

此时,压缩包中将不包含temp目录。

这样,我们通过UI默认解压出来的文件路径和压缩前是一致的。

但是,如果使用命令行解压就得手动添加上一级目录:

7z.exe x g:\temp.zip –og:\temp

接下来让人意想不到的事情再次发生了,当我们使用相对目录执行压缩命令时:

G:\> 7z.exe a g:\temp.zip temp\*

压缩包中仍然出现了temp目录。查询7z的文档后才知道,在这种情况下,要使用相对路径,需要这样写:

G:\> 7z.exe a g:\temp.zip .\temp\*

在压缩包中包含压缩目录的父目录

还有一种情况,就是我们在压缩一个目录时,希望把它的父目录信息也保存到压缩包里。注意,压缩包里只有父目录而不包含父目录中的其他文件。这时就必须使用相对目录了:

G:\>7z.exe a g:\temp.zip temp\test\

这样,压缩包中文件的根目录就是temp了。

文件列表

当执行压缩命令时,除了指定目录外还可以指定一个或者多个文件。如果要指定多个文件/目录,最好的方法是把这些文件/目录的名称写到一个文本文件中,然后把这个文本文件作为命令行参数。这个文本文件就称为文件列表,在参数中引用它时需要在文件名前面添加一个特殊的符号’@’。

G:\>7z.exe a g:\abc.zip –i@g:\list.txt 

-i表示list.txt中罗列的文件和目录会被添加到压缩包中。

文件列表中可以写文件的绝对路径,也可以写相对路径。需要注意的是,如果写相对路径,是相对于当前工作目录的路径,而不是相对于list.txt的路径。

文件列表中既可以罗列单个文件的路径,也可以罗列目录的路径。注意区分相对路径和绝对路径,其规则和前文所述相同。

除了包含指定的目录/文件,还可以排除指定的目录/文件。

G:\>7z.exe a g:\temp.zip g:\temp\ -x@g:\temp\list.txt

-x表示list.txt文件中列出的文件和目录不会添加的压缩包中。

注意:排除列表中只能使用相对目录。

7z命令行参数中的路径的更多相关文章

  1. python中os.path.dirname(__file__) 命令行 参数没有绝对路径导致数据库找不到

    (1).当"print os.path.dirname(__file__)"所在脚本是以完整路径被运行的, 那么将输出该脚本所在的完整路径,比如: python d:/python ...

  2. .NET 命令行参数包含应用程序路径吗?

    如果你关注过命令行参数,也许发现有时你会在命令行参数的第一个参数中中看到应用程序的路径,有时又不会.那么什么情况下有路径呢? 其实是否有路径只是取决于获取命令行参数的时候用的是什么方法.而这是 Win ...

  3. C++ main函数命令行参数使用

    1. C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* argv ...

  4. shell 命令行参数(基本)

    命令行参数 $0 表示程序名.$1 至 \$9则是位置参数.$# 表示参数的个数.$* 将所有参数当做一个整体来引用$@ 把每个参数作为一个字符串返回,可以使用for循环来遍历$? 最近一个执行的命令 ...

  5. Python 的命令行参数处理 optparse->argparse

    optaprse自2.7版开始弃用:弃用optparse模块,不会进一步开发,将继续开发argparse模块作为替代. 但是用习惯了optparse,还是很好用的撒. optparse使用起来,相比旧 ...

  6. 【转】getopt分析命令行参数

    (一) 在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如: ./a.out -a1234 -b432 -c -d 程序会根据读取的参数执行相应的操作,在C语言中,这个 ...

  7. C# 调试程序时如何输入命令行参数

    调试程序时如何输入命令行参数http://www.a769.com/archives/320.html 开发命令行程序时,我们会疑惑,从那里输入参数呢?请看下面的教程,让你摆脱困扰. 1.点击菜单栏: ...

  8. 使用FindCmdLineSwitch处理命令行参数

    一.四个形式(变体) .function FindCmdLineSwitch(const Switch: string; const Chars: TSysCharSet; IgnoreCase: B ...

  9. getopt、getopt_long和getopt_long_only解析命令行参数

    一:posix约定: 下面是POSIX标准中关于程序名.参数的约定: 程序名不宜少于2个字符且不多于9个字符: 程序名应只包含小写字母和阿拉伯数字: 选项名应该是单字符或单数字,且以短横 '-' 为前 ...

随机推荐

  1. 阿里巴巴-OS事业群-OS手机事业部-系统服务部门招聘Java开发工程师,有意者请进来

    我是阿里巴巴-OS事业群-OS手机事业部-系统服务部的开发工程师,正在招聘Java开发工程师. 以下是职位描述: 岗位名称:Java开发工程师 招聘人数:5人 生效日期:2014-03-12 结束日期 ...

  2. 风筝的C++随时记

    关于常量指针与指针常量 关于按位运算符(&.|.<<.>>)   关于常量指针和指针常量 两个概念经常混淆啊,这是在考中文四六级啊,所以我给这两个概念起个长一点的名字. ...

  3. KindEditor编辑器For DotNet控件

    KindEditor很不错,刚接触不久,非常喜欢.KindEditor网站有ForPHP等扩展的,没有ForNet的. 我是搞.net开发的,就用它简单封装了一个控件,拖过来即可使用,使用更加简单.源 ...

  4. SQL面试题

    Student(S#,Sname,Sage,Ssex) 学生表     S#:学号:Sname:学生姓名:Sage:学生年龄:Ssex:学生性别Course(C#,Cname,T#) 课程表     ...

  5. Java连接Oracle数据库开发银行管理系统【一、需求篇】

    此系统开发共分为三篇完成. 第一篇[需求篇]:效果展示图,也就是需求部分的展示 第二篇[设计篇]:需求分析和类,接口的设计 第三篇[实现篇]:具体代码实现

  6. struts2学习笔记之五:表单数据收集的几种方式

    方法一:struts2对ModelDriven模式的支持(模型驱动模式) Struts2可以采用类似于Struts1中的ActionForm方式收集数据,这样方式叫ModelDriven模式 Acti ...

  7. lua表排序

    对于lua的table排序问题,一般的按照value值来排序,使用table.sort( needSortTable , func)即可(可以根据自己的需要重写func,否则会根据默认来:默认的情形之 ...

  8. Atitit 发帖机实现(2)---usrQBN2243 文本解析到对象协议规范

    Atitit 发帖机实现(2)---usrQBN2243 文本解析到对象协议规范 文本内容 ###注释 标题:标题标题标题标题标题1 人数:5 月薪:2000-3000 内容: 内容内容内 容内容内容 ...

  9. Piwik 扩展获取客户端IP地址

    piwik 数据库浏览记录存放在piwik_log_visit表中 piwik_log_visit 表有个location_ip字段,该字段存储为Byte[]字节 解析出来后的IP地址为 XXX.XX ...

  10. 每天学点前端——基础篇1:css盒子模型,绝对定位和相对定位

    什么是css盒子模型(Box Model)? W3C中解释为:规定了元素框处理元素内容.内边距.边框和外边距的方式: MDN:文档中的每个元素被描绘为矩形盒子.渲染引擎的目的就是判定大小,属性--比如 ...