Winrar中排除文件夹

15

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开关。


1
考虑这种情况,如果你排除一个目录并包含其中的文件,它仍然会被创建。文档说明可以多次使用-x指令。你试过-x!tmp1\*\a\* -x!tmp1\*\a吗? - Wug
1
不,我没有尝试过基于-x!tmp1\f2的尝试来修剪整个枝干,那么为什么-x!tmp1\*\a不能起到同样的作用呢?不过我会尝试一下的,感谢您的建议。 - Mark Robbins
@MarkRobbins,你能解决这个问题吗?你可以试试我的解决方案吗? - Andrew
3个回答

16

(虽然是一个比较老的问题,但仍然可能有参考价值)

也许你只需要这个:

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

这是两个排除开关,可以删除目录f2及其所有内容。


9

虽然这是一个旧问题,但我看到了这个问题,所以我复制了你的文件夹结构,并且至少现在(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

2

为了管理大量需要排除的文件,您可以创建一个文本文件,并将所有要排除的文件/文件夹相对于源文件夹写入其中:

1)创建名为list.txt的文件,写入要排除的文件/文件夹的名称 注意:*代表源文件夹,所有文件/文件夹都与源文件夹相关

*\f2 *\f3

2)运行命令。

       rar a -r  -x@list.txt target.rar source-folder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接