windows-nutzer
Goto Top

Script zum Entpacken von rar und zip-Dateien

Hallo zusammen,

ich will mir gerne ein Script schreiben das mir rar und zip Dateien entpackt. Es sind mindestens 100 an der Zahl und teilweise liegen die in Unterordnern.

Beim Recherchieren habe ich folgendes gefunden:
unpack() {
    for file in $@
    do
        if [ "${file%.[zZ][iI][pP]}" != "${file}" ]  
        then
            unzip "$file"  
        elif [ "${file%.[rR][aA][rR]}" != "${file}" ]  
        then
            unrar x "$file"  
        else
            echo "Couldn't determine file type..."  
        fi
    done
}
# Aufruf: unpack *

oder das hier:
for rarfile in *.rar;do unrar x "$rarfile"; done  

beziehungsweise für zip
for zipfile in *.zip;do unzip "$zipfile"; done  

Ich habe die Datei dann mit Test.bat in einen Testordner gespeichert und eine rar-Datei zum Testen dorthin kopiert. Leider wird weder bei dem einen noch bei dem anderen Code etwas entpackt. Wo liegt mein Fehler?

Vom Script-Schreiben habe ich leider keine Ahnung. Gibt es ein Lehrbuch oder eine Seite, die ihr zum Lernen empfehlen könnt?

Content-Key: 330600

Url: https://administrator.de/contentid/330600

Ausgedruckt am: 19.03.2024 um 04:03 Uhr

Mitglied: kaiand1
kaiand1 26.02.2017 um 15:20:59 Uhr
Goto Top
Eine Fehlermeldung hast du sicherlich bekommen die schon auf den Fehler Hinweist die jedoch nicht angegeben wurde.
Zudem kannst du zb auch 7z verwenden.
Wobei die Packer da auch schon soweit in der Lage sind wenn du einfach nur
7z x *.rar
angibst und der alle rar-Archive Entpackt.
Mitglied: Tsocin
Lösung Tsocin 26.02.2017 aktualisiert um 16:57:02 Uhr
Goto Top
Zitat von @windows-nutzer: Test.bat

Wegen des Dateinamens und deines Benutzernames vermute ich, du bist im Windows-Umfeld unterwegs. Das Skript ist allerdings ein Shell-Skript, welches unter Linux läuft.

Schau mal hier.
Mitglied: windows-nutzer
windows-nutzer 26.02.2017 um 19:48:07 Uhr
Goto Top
Danke für die Rückmeldung. Das wusste ich natürlich nicht, dass das ein Shell-Skript für Linux ist. Das nützt mir nichts. Danke für den Hinweis. Wie müsste das jetzt für die Windows Umgebung aussehen?

7zip ist sehr gute Software, doch ich will das Skript noch weiter ausbauen. Da sollen die entpackten Dateien dann umbenannt werden nach dem Namen der rar-Datei. Aber eins nach dem anderen. Erstmal brauche ich ein Skript, das mir die Dateien entpackt.
Mitglied: Tsocin
Tsocin 26.02.2017 um 19:54:27 Uhr
Goto Top
Schau dir mal den Link in meinem vorherigen Post an. Dort habe ich entsprechende Lösungshinweise bei Stackoverflow verlinkt.
Mitglied: windows-nutzer
windows-nutzer 27.02.2017 um 21:38:42 Uhr
Goto Top
Diesen kleinen Link hatte ich vollkommen übersehen face-smile

Jetzt habe ich mir einen Code rausgesucht
for /R "C:\root\folder" %%I in ("*.zip") do (  
  "C:\Programme\7-Zip\7z.exe" x -y -o"%%~dpnI" "%%~fI"   
)
aber passieren tut da leider nichts. 7zip ist installiert.
Ich bin völlig planlos.
Mitglied: Tsocin
Lösung Tsocin 28.02.2017 um 10:17:18 Uhr
Goto Top
Hast du die Pfade angepasst? Du musst "C:\root\folder" an das Verzeichnis mit deinen ZIP-Dateien anpassen. Und natürlich den Pfad zu 7zip ebenfalls. Falls du ein 64bit Betriebssystem und ein 32bit 7zip hast, müsste der Pfad z.B. C:\Programme (x86)\... lauten.

Was gibt das Programm denn als Fehlermeldung aus? Setz ggf. mal ein "pause" an das Ende der Batch-Datei und poste die Ausgabe hier.
Mitglied: windows-nutzer
windows-nutzer 28.02.2017 um 22:06:28 Uhr
Goto Top
Jetzt läuft's face-smile
Hatte übersehen, dass ich "C:\root\folder" entsprechend umändern muss. Bin ein totaler Frischling was das angeht.
Danke
Mitglied: windows-nutzer
windows-nutzer 01.03.2017 um 22:28:12 Uhr
Goto Top
Woran lässt sich ablesen, dass das Shell-Skript zu Beginn meines Beitrages für Linux gedacht ist?
Mitglied: Tsocin
Tsocin 04.03.2017 um 08:30:06 Uhr
Goto Top
Das erkennt man an der Syntax - z.B. das Konstrukt if - elif - fi gibt es in Batch nicht. Wenn man die Syntax der verschiedenen Programmiersprachen ein wenig kennt, erkennt man das. Ansonsten einfach mal ein paar zentrale Sprachelemente (wie z.B. "if elif fi") bei Google eingeben.