通过 VB.NET 使用 Rar.exe 压缩文件夹?

巴迪罗奇

我已经使用 Unrar.exe 从 RAR 存档中提取了一个包含文件的文件夹,然后我想编辑提取文件夹中的文件,然后将该文件夹重新 rar 恢复为受密码保护的 RAR 存档。要么,要么附加现有的 RAR 存档。无论哪种方式,主要目标都是更新受密码保护的存档中的文件。但我似乎无法弄清楚如何再次压缩文件夹。我的代码如下:

Imports System.IO

Public Class Form1
    'establish the application directory and set it as a string to plugin later when needed
    Dim MAINDIR As String = AppDomain.CurrentDomain.BaseDirectory



    Private Sub UNRAR()
        'if extracted folder does NOT exist then
        If Not (System.IO.Directory.Exists(MAINDIR & "Credentials\")) Then
            'set variables
            Dim SourceFile As String = MAINDIR & "Credentials.rar"
            Dim PassWord As String = "locker101"
            Dim DestinationFolder As String = MAINDIR
            'if extracted folder does not exist then
            If Not IO.Directory.Exists(DestinationFolder) Then IO.Directory.CreateDirectory(DestinationFolder)
            'unrar it and create extracted folder with the files
            Dim p As New Process
            p.StartInfo.FileName = MAINDIR & "UnRAR.exe"
            p.StartInfo.Arguments = "-p" & PassWord & " x " & Chr(34) & SourceFile & Chr(34) & " " & Chr(34) & DestinationFolder & Chr(34)
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            p.Start()

        End If

    End Sub



    Private Sub EDIT(ByVal ACCOUNT, ByVal USER, ByVal PASS, ByVal URL)
        Do Until (System.IO.Directory.Exists(MAINDIR & "Credentials\"))
            'does nothing on loop and keeps checking for the folder to exist
        Loop
        'confirms that the folder exists then begins to write to the file(s) inside
        If (System.IO.Directory.Exists(MAINDIR & "Credentials\")) Then

            Dim file As System.IO.StreamWriter
            file = My.Computer.FileSystem.OpenTextFileWriter(MAINDIR & "Credentials\" & ACCOUNT & ".txt", False)
            file.WriteLine(USER)
            file.WriteLine(PASS)
            file.WriteLine(URL)
            file.Close()
            MsgBox("DONE")
        Else
            MsgBox("FAILED")

            MsgBox("END existing")

            MsgBox("END LOOP")

        End If
        APPENDRAR()
    End Sub

    Private Sub APPENDRAR()


    End Sub



    Private Sub DELETE()
        'deletes the extracted folder, leaving behind only the password protected rar archive
        My.Computer.FileSystem.DeleteDirectory(MAINDIR & "Credentials", False, False)
    End Sub



    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        UNRAR()
        'sets textboxes' texts as strings then sends those values to the EDIT sub
        Dim btn As Button = DirectCast(sender, Button)
        Dim ACCOUNT As String = TB_account.Text
        Dim USER As String = TB_user.Text
        Dim PASS As String = TB_pass.Text
        Dim URL As String = TB_url.Text
        EDIT(ACCOUNT, USER, PASS, URL)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    End Sub
End Class

还应该提到的是,我在应用程序文件夹中有 Unrar.exe 和 Rar.exe 文件。在 Winrar 目录中找到的相同文件。我将它们添加到我的项目文件夹中以使用它们。

在此处输入图片说明

对预期内容的简要说明:用户将填写 3 个文本框(用户名、密码、网站 url),然后他们将单击一个按钮。该按钮将每个文本框中的文本作为值,然后创建这些值的字符串。然后,它将这些字符串值传递到解压缩 RAR 存档的子程序上,然后一旦文件夹被提取,它要么覆盖该文件夹中的任何现有文件,要么创建一个新文件。然后,它应该使用与以前相同的密码将这个新编辑的文件夹重新打包回 RAR 存档,然后删除提取的文件夹和旧的 RAR 存档(除非我可以将它们附加回原始存档,否则我不会必须制作“更新”存档。)

更新:

 Dim SourceFile As String = MAINDIR & "Credentials\"
Dim PassWord As String = "locker101"
Dim DestinationFolder As String = MAINDIR
'if extracted folder does not exist then
'If Not IO.Directory.Exists(DestinationFolder) Then IO.Directory.CreateDirectory(DestinationFolder)
'unrar it and create extracted folder with the files
Dim p As New Process
Dim bbs As String = "-p" & PassWord & " u " & Chr(34) & MAINDIR & "ass.rar" & Chr(34) & " " & Chr(34) & SourceFile & Chr(34)
p.StartInfo.FileName = MAINDIR & "Rar.exe"
p.StartInfo.Arguments = bbs
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
p.Start()

这似乎有效,但似乎不仅添加了“凭据”文件夹,而且添加了从“项目”开始的每个文件夹。

巴迪罗奇

我终于弄明白了。以防万一其他人需要答案,这里是。

 Dim p0 As New Process
            Dim createo As String
            createo = "-p" & <PASSWORD> & " u -ep " & Chr(34) & <arhive.rar> & Chr(34) & " " & Chr(34) & <FILE TO REPLACE> & Chr(34)
            p0.StartInfo.FileName = "Rar.exe"
            p0.StartInfo.Arguments = createo
            p0.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            p0.Start()

字符串示例

 createo = "-p" & TB_BIGKEY.Text & " u -ep " & Chr(34) & Form1.MAINDIR & "Users\" & TB_ID.Text & ".rar" & Chr(34) & " " & Chr(34) & Form1.MAINDIR & "Users\" & TB_ID.Text & ".txt" & Chr(34)

读出 'tostring' 为

-ppassyword u -ep "F:\Projects\PG\PG\bin\Debug\Users\Username.rar" "F:\Projects\PG\PG\bin\Debug\Users\Username.txt"
or <PASSWORD> <UPDATE> <EXLUDE PATHS> <RAR TO UPDATE> <FILE TO UPDATE WITH>

要不使用密码,只需删除该-ppassyword部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Java压缩文件夹本身

使用python解压缩文件夹和子文件夹中的zip文件

如何在.net Framework 4.0中压缩文件夹

如何使用批处理脚本使用rar.exe将文件夹中的每个子文件夹压缩到单独的RAR存档中?

如何使用zipfile python压缩文件夹

通过命令行使用密码压缩文件夹

Bash命令使用密码压缩文件夹

使用rar文件

使用Shell32压缩文件时出现VB.NET System.NullReferenceException

使用Applescript压缩和解压缩文件夹

使用vb.net,是否可以找到文件夹及其子文件夹中的所有压缩文件?

如何使用Clojure递归压缩文件夹

如何压缩文件夹中的所有文件并通过命令行擦除未压缩的版本?

如何使用7-zip分别压缩文件夹中的文件(每个文件)?

使用vb.net中包含空格的参数启动exe

如何解压缩文件夹的所有子文件夹中的所有rar档案,然后删除档案?

使用YUI压缩器.NET压缩子文件夹中的所有JS文件

如何通过Powershell运行7zip来解压缩.rar文件夹?

使用tar压缩文件夹中的特定文件夹(目录)

通过特定过滤压缩文件夹结构

使用VB.NET动态生成.exe文件

使用 Powershell 脚本压缩文件夹

Java:使用子文件夹解压缩文件夹

使用动态名称压缩文件夹的内容

如何在android中压缩文件夹并通过电子邮件发送

如何在 shell 中使用 .rar 压缩文件?

从 RAR 压缩文件中提取文件

如何使用 Java 压缩和解压缩文件/文件夹

删除文件夹中的项目,而不是使用 vb.net 删除整个文件夹本身