12

与 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\

不,什么都不做 - 包括所有。哇。好吧,所以它必须是......

-x!tmp1\f2

天哪,它奏效了!嗯,那怎么会……

-x*\f2

不工作?正是这个小恶魔让我一开始就走上了这条疯狂的道路,而且应该奏效!

鉴于这一切,我敢尝试去寻找*/a/*目录,删除内容和目录吗?

-x*\a

不起作用,当然,什么也不做。

-x*\*\a

不起作用,当然,什么也不做。

-x!tmp1\*\a

不。但...

-x*\a\*

删除两个目录的内容,但保留文件夹。所以,在绝望中我可以使用-ed不会存储空文件夹的开关,但这是一个广泛的黑客,我想消除指定的文件夹而不是所有空文件夹。

随着我对 winrar 的仇恨与日俱增,我正在传递信息的指挥棒,着眼于那个辉煌的日子,那时我们将知道如何使用通配符而不是使用-ed开关来专门排除文件夹及其内容。

4

3 回答 3

17

(很老的问题,但仍然可能相关)

也许您只需要这样:

-x*\f2 -x*\f2\*

两个排除开关,应删除目录 f2 及其所有内容。

于 2013-09-19T12:07:15.097 回答
8

现在是一个更老的问题,但遇到了这个问题,所以我复制了你的文件夹结构,至少现在(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
于 2015-05-02T20:13:10.550 回答
1

要管理要排除的文件的大列表,您可以创建文本文件并写入相对于源文件夹的所有排除文件/文件夹:

1)创建文件list.txt,写上排除文件/文件夹的名称注意:*参考源,所有文件/文件夹都是相对于源文件夹

*\f2 *\f3

2)运行命令

       rar a -r  -x@list.txt target.rar source-folder
于 2018-12-04T02:17:43.357 回答