我正在开发一个 C# 应用程序,它在某些阶段使用它rar.exe
来压缩一些PDB
文件。
我想rar.exe
压缩仅有的PDB
位于某个目录中的文件及其子目录。
问题是它压缩了所有文件(甚至不是PDB
s)位于该目录中,并且还压缩目录父母我指定的目录——这不是我想要的。
这是我现在正在使用的命令行:
"C:\Program Files\WinRAR\Rar.exe" a -r -ep1 C:\Users\bla\Desktop\VersionTest\3.5.x\2.0\x64\Release\PDB\PDBs.rar *.pdb C:\Users\bla\Desktop\output64
有人知道为什么我的命令行没有提供我想要的东西吗?
答案1
Rar.exe
控制台版本的手册压缩包Rar.txt
是程序文件文件夹中的文本文件压缩包. 它描述了一般语法、RAR 命令和可以使用的开关Rar.exe
以及退出值。
下面的命令行是如何解释的Rar.exe
?
"C:\Program Files\WinRAR\Rar.exe" a -ep1 -r C:\Users\UserName\Desktop\VersionTest\3.5.x\2.0\x64\Release\PDB\PDBs.rar *.pdb C:\Users\UserName\Desktop\output64
- RAR 命令是
a
。因此应该有文件/文件夹添加到必须创建的 RAR 存档文件(如果该文件不存在)。 - 开关
-ep1
指示Rar.exe
排除路径来自所有指定的文件/文件夹直到最后一个反斜杠。 - 该开关不仅指示存档指定的文件/文件夹,还指示存档找到的所有其他文件和文件
-r
夹Rar.exe
递归地与指定文件夹中的通配符模式匹配。 C:\Users\UserName\Desktop\VersionTest\3.5.x\2.0\x64\Release\PDB\PDBs.rar
是完全合格的档案文件名。*.pdb
指示Rar.exe
归档在.pdb
当前目录(无路径)中以及由于切换而在当前目录的所有子目录中找到的所有文件(和文件夹),其日志名称以不区分大小写结尾-r
,而无需将当前目录的路径也添加到存档文件中。C:\Users\UserName\Desktop\output64
指示Rar.exe
通过开关存档文件夹中C:\Users\bla\Desktop\output64
以及此目录的所有子目录中的所有文件/文件夹,而-r
无需通过开关将路径添加C:\Users\bla\Desktop\
到存档文件-ep1
。 在这种情况下隐式使用的通配符模式适用*
于所有文件和文件夹。
但添加到存档文件中的应该只是文件*.pdb
匹配目录及其子目录中的通配符模式C:\Users\UserName\Desktop\output64
。为此,需要以下命令行:
"C:\Program Files\WinRAR\Rar.exe" a -ep1 -ed -r C:\Users\UserName\Desktop\VersionTest\3.5.x\2.0\x64\Release\PDB\PDBs.rar C:\Users\UserName\Desktop\output64\*.pdb
这些论点Rar.exe
指导
- 在目录中搜索
C:\Users\UserName\Desktop\output64
并递归地在其所有子目录中,由于开关-r
- 仅限文件
*.pdb
由于切换-ed
到,因此匹配通配符模式排除具有属性的文件系统条目目录 - 和排除因为
-ep1
切换指定路径C:\Users\UserName\Desktop\output64\
来自每个文件的每个完全限定文件名 - 到添加到存档文件
C:\Users\UserName\Desktop\VersionTest\3.5.x\2.0\x64\Release\PDB\PDBs.rar
。