zoukankan      html  css  js  c++  java
  • 7z命令行参数中的路径

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

    压缩某个文件夹

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

    7z.exe a abc.zip g:	emp

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

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

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

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

    7z.exe x abc.zip –og:

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

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

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

    7z.exe a g:	emp.zip g:	emp*

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

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

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

    7z.exe x g:	emp.zip –og:	emp

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

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

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

    G:> 7z.exe a g:	emp.zip .	emp*

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

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

    G:>7z.exe a g:	emp.zip temp	est

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

    文件列表

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

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

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

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

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

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

    G:>7z.exe a g:	emp.zip g:	emp -x@g:	emplist.txt

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

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

  • 相关阅读:
    Git 命令 stash cherry-pick reset rebase
    【操作系统】不同语言的线程实现机制对比及数据库锁问题
    【数据结构】搜索二叉树(BST)和普通二叉树的序列化与反序列化
    【自制编译器】读书笔记 -- JavaCC使用的JJ文件格式
    leetcode 874 Robot Simulation
    hihocoder 编程挑战赛75
    浪漫主义的起源--以赛亚柏林
    【美团笔试 2018-4-20 】编程题-1 测例100%通过 欧拉函数求解gcd
    【POJ SOJ HDOJ】HDU 2196 Computer 树中的最长路径
    【Java 核心】多线程笔记
  • 原文地址:https://www.cnblogs.com/sparkdev/p/5598062.html
Copyright © 2011-2022 走看看