Winrar 的一天
我想做的就是使用通配符排除文件夹及其内容,即使在阅读文档之后,它也变成了一个猜谜游戏......
所以我的测试床看起来像:
C:\!tmp1\f1
C:\!tmp1\f1\f1.txt
C:\!tmp1\f1\a
C:\!tmp1\f1\a\a.txt
C:\!tmp1\f2
C:\!tmp1\f2\f2.txt
C:\!tmp1\f2\a
C:\!tmp1\f2\a\a.txt
我正在执行:
C:\>"c:\program files\winrar\winrar.exe" a -r !tmp1.rar !tmp1
这给了我一个以 !tmp1 作为根目录(唯一的顶级文件夹)的 rar。
排除开关是
-x<filepathpattern>
,并且可以包含多次。
因此,鉴于我们想要排除 f2 及其所有子内容...
-x*\f2\*
删除内容,但留下 f2
-xf2
什么都不做 - 包括所有
-x\f2
什么都不做 - 包括所有
-x*\f2
什么都不做 - 包括所有(现在我很生气),所以肯定是..
-x\f2\
不,什么也不做——包括所有。所以它一定是...
-x*\f2\
不,什么都不做——包括所有。我已经知道了
-x*\f2\*
删除内容,但保留 f2。我们继续前进...
-x*f2\
不执行任何操作 - 包括所有操作。咕噜咕噜。啊哈!怎么样...
-x!tmp1\f2\
不,什么也不做——包括所有。 WTF。好吧,所以它必须是......
-x!tmp1\f2
天哪,它成功了!嗯嗯,那怎么会……
-x*\f2
不起作用? 就是这个小恶魔把我送上了这条疯狂的道路,应该起作用的!
鉴于这一切,我敢尝试去寻找
*/a/*
目录,删除内容和目录吗?
-x*\a
不起作用,当然,什么也没做。
-x*\*\a
不起作用,当然,什么也没做。
-x!tmp1\*\a
不。但是...
-x*\a\*
删除两个目录的内容,但保留文件夹。因此,在绝望中我可以使用
-ed
开关,它不会存储空文件夹,但这是一个广泛的黑客,我想消除指定的文件夹而不是所有空文件夹。
随着我对 winrar 的敌意与日俱增,我正在传递信息的接力棒,着眼于那辉煌的一天,那时我们将知道如何使用通配符而不是使用
-ed
开关来专门排除文件夹及其内容。
(很老的问题,但仍然可能相关)
也许您只需要这个:
-x*\f2 -x*\f2\*
两个排除开关,应删除目录 f2 及其所有内容。
现在是一个更老的问题,但遇到了这个问题,所以我重现了你的文件夹结构,至少现在(Winrar 5.11,不是最新的,但很新),这是有效的:
-x*\f2
所以整个命令行是:
"C:\Program Files\WinRAR\Rar.exe" a -m5 -s !tmp1.rar !tmp1 -x*\f2
这就是 .rar 文件中存储的内容:
!tmp1\f1\a\a.txt
!tmp1\f1\f1.txt
!tmp1\f1\a
!tmp1\f1
!tmp1
同样,如果您使用
-x*\a
,所有 a
文件夹都会被排除,存储以下内容:
!tmp1\f1\f1.txt
!tmp1\f2\f2.txt
!tmp1\f1
!tmp1\f2
!tmp1
最后,结合两个参数 (
-x*\f2 -x*\a
),你会得到:
!tmp1\f1\f1.txt
!tmp1\f1
!tmp1
要管理要排除的大量文件,您可以创建文本文件并写入相对于源文件夹的所有排除文件/文件夹:
1)创建文件list.txt,写入排除的文件/文件夹的名称 注意:*指的是源,所有文件/文件夹都是相对于源文件夹的
* 2 * 3
2)运行命令
rar a -r [email protected] target.rar source-folder
就这么简单: 右键单击要压缩的文件夹,选择“添加到存档”,在打开的小对话框窗口中转到“文件”选项卡,然后在“要排除的文件”字段中输入要排除的文件夹名称,如下所示: 假设您想在压缩中排除所有名为“styles”的文件夹,请输入:
*款式/
node.js 程序员的常见示例:您想排除“node_modules”文件夹吗? 只需在“要排除的文件”字段中输入此内容即可:
*节点模块/
您可以添加其他要排除的内容,只需用空格分隔即可。 示例:
*node_modules/*dist/*.txt