如何使用命令行参数rar / unrar

时间:2015-07-09 01:09:06

标签: c# winrar

我已经通过互联网查看了winrar的命令行参数是如何工作的,这是我到目前为止所做的

        void LOCK(string fld, string pw)
    {
        Process p = new Process();
        p.StartInfo.FileName = @"C:\Program Files\WinRAR\WinRAR.exe";
        p.StartInfo.Arguments = "rar a -p" + pw + " PL_LOCKED_ARCHIVE.rar " + fld;
        p.Start();
    }

    void UNLOCK(string fld, string pw)
    {
        Process p = new Process();
        p.StartInfo.FileName = @"C:\Program Files\WinRAR\WinRAR.exe";
        p.StartInfo.Arguments = "unrar x -p" + pw + " PL_LOCKED_ARCHIVE.rar";
        p.Start();
    }

然而,它似乎无法在任何地方创建任何存档,测试文件夹为C:\ PicsAndStuff

2 个答案:

答案 0 :(得分:3)

您定义的StartInfo导致使用命令行运行WinRAR.exe

C:\Program Files\WinRAR\WinRAR.exe unrar x -p pw PL_LOCKED_ARCHIVE.rar

这当然是错误的,因为您不想运行WinRAR.exe,第一个参数是对控制台版本Rar.exeUnRAR.exe的引用。结果很可能是错误消息,因为rar命令unrar无效,因为a的第一个参数必须是xWinRAR.exe

首先,您需要更正StartInfo

void LOCK(string fld, string pw)
{
    Process p = new Process();
    p.StartInfo.FileName = @"C:\Program Files\WinRAR\Rar.exe";
    p.StartInfo.Arguments = "a -p" + pw + " PL_LOCKED_ARCHIVE.rar " + fld;
    p.Start();
}

void UNLOCK(string fld, string pw)
{
    Process p = new Process();
    p.StartInfo.FileName = @"C:\Program Files\WinRAR\UnRAR.exe";
    p.StartInfo.Arguments = "x -p" + pw + " PL_LOCKED_ARCHIVE.rar";
    p.Start();
}

当在命令提示符窗口中简单地运行Rar.exe而没有任何参数时,将简要解释控制台版本Rar.exe的所有命令和开关。如果在没有任何参数的情况下执行,UnRAR.exe也会输出一个简短的帮助。

最后但并非最不重要的是,Rar.exe有一本完整的手册,当然也可以从RAR档案中提取文件和文件夹,这使UnRAR.exe的其他用法无用。手册是Rar.txt程序文件文件夹中的文本文件WinRAR,您应该从上到下阅读。我建议在读取命令行时构建命令行,并在命令提示符窗口中首先测试命令行。

注1: Rar.exe是共享软件。只有UnRAR.exe是免费软件。

注2: GUI版本WinRAR.exe支持的不仅仅是控制台版本Rar.exe,因此交换机列表略有不同。可以在帮助 - 帮助主题或按 F1 打开的 WinRAR 的帮助下找到WinRAR.exe的完整文档。在选项卡目录项目命令行模式的帮助中打开并阅读。 WinRAR.exe也是共享软件。

答案 1 :(得分:1)

您需要加密文件数据和标头。

根据Documentation (命令行模式&gt;开关&gt;&#34; -hp [pwd] - 加密文件数据和标题&#34;) < /强>:

  

此开关类似于-p [p],但switch -p仅加密文件数据   并保留其他信息,如文件名可见。这个开关   加密所有敏感的归档区域,包括文件数据,文件名,   大小,属性,注释和其他块,所以它提供更高   安全等级。

这是使用命令行访问它的方法:

语法:rar a -hp [MyPassword] -r [filepath] [folderpath]

"C:\Program Files\WinRAR\WinRAR.exe" a -hp12345678 -r d:\zipProject d:\Project

C#代码:

void LOCK(string fld, string pw)
{
    Process p = new Process();
    p.StartInfo.FileName = @"C:\Program Files\WinRAR\WinRAR.exe";
    p.StartInfo.Arguments = "rar a -hp" + pw + " PL_LOCKED_ARCHIVE.rar " + fld;
    p.Start();
}