다중 부분 rar 추출, 추출되는 부분 삭제

다중 부분 rar 추출, 추출되는 부분 삭제

압축을 푼 80GB의 멀티파트 RAR이 있습니다. 5GB의 여유 공간이 있고 rar 아카이브의 모든 부분은 2GB입니다.

내가 찾고 있는 것은 추출 프로세스에서 최대 5GB를 더 사용하고 디스크 공간을 모두 소모하지 않도록 한 부분을 추출하고 삭제하고 다음 부분을 추출하는 것입니다.

답변1

중요한:

  • 이 스크립트할 것이다최종 결과에 관계없이 추출이 완료된 부분을 삭제하십시오. 따라서 누락되거나 손상된 부분으로 인해 프로세스가 중지되면 다시 시작할 수 없습니다.

  • 메모장을 열고 다음 코드를 붙여넣은 후 다른 이름으로 저장하세요._unrar.vbsrar 파일과 같은 폴더에 있습니다.
  • 세트UnRAR_Full_Path,첫 번째 부분그리고대상_폴더, 따옴표를 유지하십시오.

스크립트:

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

옵션 1:조용한

실행_unrar.vbs파일을 두 번 클릭하여

옵션 2:추천

제거하다'처음부터

'WScript.Echo (strLine)

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

cmd를 열고 폴더로 직접 이동하여 다음을 입력하세요."cscript _unrar.vbs"

  • 사용하여WScript.Echo없이c스크립트짜증나는 메시지 상자가 너무 많이 나타납니다.

이 스크립트는 UnRAR.exe의 Stdout을 읽어 작동합니다.

편집하다

모든 이름 구조 및 최대 9999개의 부품과 자동으로 작동하도록 스크립트가 개선되었습니다. 앞에 0이 포함되지 않은 레거시 아카이브로 작업합니다.

관련 정보