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
Run Code Online (Sandbox Code Playgroud)
我正在执行:
C:\>"c:\program files\winrar\winrar.exe" a -r !tmp1.rar !tmp1
Run Code Online (Sandbox Code Playgroud)
这给了我一个rar!tmp1作为根(唯一的顶级文件夹).
排除开关是-x<filepathpattern>
并且可以包括多次.
所以,鉴于我们想要排除f2及其所有子内容......
-x*\f2\*
Run Code Online (Sandbox Code Playgroud)
删除内容,但离开f2
-xf2
Run Code Online (Sandbox Code Playgroud)
什么都不做 - 包括所有
-x\f2
Run Code Online (Sandbox Code Playgroud)
什么都不做 - 包括所有
-x*\f2
Run Code Online (Sandbox Code Playgroud)
什么都不做 - 包括所有(现在我很生气),所以肯定一定是......
-x\f2\
Run Code Online (Sandbox Code Playgroud)
不,什么都不做 - 包括所有.所以它有GOT ......
-x*\f2\
Run Code Online (Sandbox Code Playgroud)
地狱不,什么都不做 - 包括所有.我已经知道了
-x*\f2\*
Run Code Online (Sandbox Code Playgroud)
删除内容,但离开f2.我们走吧......
-x*f2\
Run Code Online (Sandbox Code Playgroud)
什么都不做 - 包括所有.GRRRR.啊哈!怎么样...
-x!tmp1\f2\
Run Code Online (Sandbox Code Playgroud)
不,什么都不做 - 包括所有.WTF.好吧,所以GOT要......
-x!tmp1\f2
Run Code Online (Sandbox Code Playgroud)
圣洁的莫莉,它奏效了!嗯,那怎么来....
-x*\f2
Run Code Online (Sandbox Code Playgroud)
不起作用?这是一个小恶魔,让我沿着这条疯狂的道路开始,应该有效!
鉴于这一切,我是否敢于尝试*/a/*
追踪目录,删除内容和目录?
-x*\a
Run Code Online (Sandbox Code Playgroud)
不起作用,当然,什么都不做.
-x*\*\a
Run Code Online (Sandbox Code Playgroud)
不起作用,当然,什么都不做.
-x!tmp1\*\a
Run Code Online (Sandbox Code Playgroud)
不.但...
-x*\a\*
Run Code Online (Sandbox Code Playgroud)
删除两个目录的内容,但保留文件夹.所以,在绝望中我可以使用-ed
不会存储空文件夹的开关,但这是一个广泛的黑客,我想消除指定的文件夹不是所有空文件夹.
随着我对winrar的不满,我正在向前传递信息的指挥棒,我们将知道如何使用通配符而不是使用-ed
开关专门排除文件夹及其内容.
现在这是一个更老的问题,但遇到了这个问题,所以我重现了你的文件夹结构,至少现在(Winrar 5.11,不是最新但很新),这有效:
-x*\f2
Run Code Online (Sandbox Code Playgroud)
所以整个命令行是:
"C:\Program Files\WinRAR\Rar.exe" a -m5 -s !tmp1.rar !tmp1 -x*\f2
Run Code Online (Sandbox Code Playgroud)
这是存储在.rar文件中的内容:
!tmp1\f1\a\a.txt
!tmp1\f1\f1.txt
!tmp1\f1\a
!tmp1\f1
!tmp1
Run Code Online (Sandbox Code Playgroud)
同样,如果您使用-x*\a
,a
则排除所有文件夹,存储:
!tmp1\f1\f1.txt
!tmp1\f2\f2.txt
!tmp1\f1
!tmp1\f2
!tmp1
Run Code Online (Sandbox Code Playgroud)
最后,结合两个参数(-x*\f2 -x*\a
),你得到这个:
!tmp1\f1\f1.txt
!tmp1\f1
!tmp1
Run Code Online (Sandbox Code Playgroud)