Extrahieren Sie mehrteilige RAR-Dateien und löschen Sie Teile, sobald sie extrahiert sind.

Extrahieren Sie mehrteilige RAR-Dateien und löschen Sie Teile, sobald sie extrahiert sind.

Ich habe eine mehrteilige RAR-Datei mit 80 GB ausgepackt. Ich habe 5 GB freien Speicherplatz und jeder Teil des RAR-Archivs ist 2 GB groß.

Ich möchte einen Teil extrahieren, ihn löschen, den nächsten extrahieren und so weiter, um beim Extraktionsprozess höchstens weitere 5 GB zu verwenden und nicht meinen gesamten Speicherplatz zu erschöpfen.

Antwort1

WICHTIG:

  • dieses SkriptWILLELöschen Sie die extrahierten Teile unabhängig vom Endergebnis. Wenn der Vorgang also wegen eines fehlenden oder beschädigten Teils angehalten wird, können Sie nicht von vorne beginnen.

  • Öffnen Sie den Editor, fügen Sie den folgenden Code ein und speichern Sie ihn als_unrar.vbsim selben Ordner mit Ihren RAR-Dateien.
  • SatzUnRAR_Full_Path,Erster TeilUndZielordner, achten Sie darauf, die Anführungszeichen beizubehalten.

Das Skript:

UnRAR_Full_Path = "c:\program files\winrar\unrar.exe"
First_Part = "YourArchiveName.part001.rar"
Target_Folder = "ExtractedFiles\"

mf_command = AddQuotes(UnRAR_Full_Path) & " x " & AddQuotes(First_Part) & " " & AddQuotes(Target_Folder)
mf_LZerosSplit = Split(First_Part, ".")
mf_LZerosPart = Mid(mf_LZerosSplit(UBound(mf_LZerosSplit)-1), 5)
If UBound(mf_LZerosSplit) > 3 Then
    WScript.Echo ("Too Lazy to deal with names the contains dots, only 2 are allowed. one before 'part' and one before 'rar'")
    WScript.Quit 1
End If
mf_LZ_UnderTen = ""
mf_LZ_UnderHundred = ""
mf_LZ_UnderThousand = ""

If Len(mf_LZerosPart) = 2 Then
    mf_LZ_UnderTen = "0"

ElseIf Len(mf_LZerosPart) = 3 Then
    mf_LZ_UnderTen = "00"
    mf_LZ_UnderHundred = "0"

ElseIf Len(mf_LZerosPart) = 4 Then
    mf_LZ_UnderTen = "000"
    mf_LZ_UnderHundred = "00"
    mf_LZ_UnderThousand = "0"
End If 
Set objShell = CreateObject("WScript.Shell")
Set objWshScriptExec = objShell.Exec(mf_command)
Set objStdOut = objWshScriptExec.StdOut

While Not objStdOut.AtEndOfStream
    strLine = objStdOut.ReadLine

    'WScript.Echo (strLine)

        If InStr(strLine,"Extracting from") Then
            mf_filename = Mid(strLine, 17)
            mf_partnameSplit = Split(mf_filename, ".")
            mf_partname = mf_partnameSplit(1)
            mf_partnumber = Mid(mf_partname , 5)
            If mf_partnumber > 1 Then
                mf_numtodel = mf_partnumber-1
                mf_LeadingZeros = ""
                If mf_numtodel < 10 Then
                    mf_LeadingZeros = mf_LZ_UnderTen
                ElseIf mf_numtodel < 100  Then
                    mf_LeadingZeros = mf_LZ_UnderHundred
                ElseIf mf_numtodel < 1000  Then
                    mf_LeadingZeros = mf_LZ_UnderThousand
                End If
                mf_filetodel = mf_partnameSplit(0) & ".part" & mf_LeadingZeros & mf_numtodel & ".rar"

                'WScript.Echo ("NOW DELETING: " & mf_filetodel)

                Set obj = CreateObject("Scripting.FileSystemObject")
                obj.DeleteFile(mf_filetodel)
            End If
        ElseIf InStr(strLine,"All OK") Then
            WScript.Echo ("looks like All Ok, Delete the Last part and Have a nice day :)")
        End If
Wend

Function AddQuotes(strInput)
    AddQuotes = Chr(34) & strInput & Chr(34)
End Function

Option eins:Still

führen Sie den_unrar.vbsDatei durch Doppelklicken

Option zwei:Empfohlen

entferne das'vom Beginn des

'WScript.Echo (strLine)

'WScript.Echo ("Deleting: " & mf_filetodel)

Öffnen Sie cmd, gehen Sie direkt zu Ihrem Ordner und geben Sie ein"cscript _unrar.vbs"

  • mitWScript.EchoohnecscriptEs werden zu viele nervige Meldungsfelder angezeigt

Dieses Skript funktioniert, indem es die Standardausgabe von UnRAR.exe liest.

BEARBEITEN

Das Skript wurde verbessert, sodass es automatisch mit jeder Namensstruktur und mit einer beliebigen Anzahl von Teilen bis zu 9999 Teilen funktioniert und mit älteren Archiven funktioniert, die keine führenden Nullen enthalten.

verwandte Informationen