Extrahiert Dateien in demselben Ordner als Archiv mit rekursive Suche in allen Verzeichnissen
Arbeite ich an einer automatisierungstechnischen Aufgabe in PowerShell, extrahiert den Inhalt von mehreren .tar-Archive zu Ihren jeweiligen Unterordner durch die Verwendung von Rekursion und die 7z.exe utility.
Im laufen in ein Problem, wo die Ausgabe-dumps in meinem Arbeitsverzeichnis anstatt das Unterverzeichnis gci -r gefunden, der Originale tarball.
Bisher habe ich:
$files=gci -r | where {$_.Extension -match "tar"}
foreach ($files in $files) {
c:\7z.exe e -y $file.FullName }
Beratung über die Einstellung des Arbeitsverzeichnisses innerhalb der Schleife oder 7z-Tipps sind willkommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin Total völlig ahnungslos, wenn es um die powershell, aber nach dem Download eine enorme torrent voll von Unterverzeichnissen ("publisher.Titel.Autor.Jahr" im wesentlichen) mit je einer oder mehreren zip-Dateien, die bei der Dekomprimierung der jeweils enthaltenen Teil eines multi-file-rar-arhive, und ENDLICH einmal montiert, die eine (nutzlos genannt) pdf-Datei...
so kam ich auf dieses rauh und bereit-Skript recurse in jedes Unterverzeichnis entpacken Sie den Reißverschluss in das Verzeichnis, dann montieren Sie die rar-Dateien extrahieren und die pdf-Datei in diesem Verzeichnis, benennen Sie die pdf-Datei mit dem Verzeichnis-Namen, und verschieben Sie es auf ein Verzeichnis (am Ende landete ich mit dem base-Verzeichnis voller aussagekräftig benannten pdf-Dateien...
sowieso - wie ich schon sagte, ich habe buchstäblich keine powershell-Kenntnisse so bin ich vor allem dieses posting, weil ich verschwendet zwei Stunden, es zu schreiben (ich könnte es getan haben, in 5-10 Minuten in python oder perl :P) und weil, wenn es auf der I net könnte tatsächlich finden es wieder, wenn ich muss hehe
Paar Punkte:
1) Verwenden Sie
x
Flagge statte
zu "Pfade beibehalten".2) Verwenden
-o
angeben, Ziel - /Ausgang. Ich nehme den Ziel-Ordner werden die Namen der tar-Datei ( ohne Endung ) und den Pfad der gleiche sein wie die tar-Datei. Sie können entfernen Sie die Ordner und muss nur den Pfad.3) Sie sind nur mit
gci -r
- es sieht für die Dateien im aktuellen Verzeichnis. Ich habe$scriptDir
unten, die unter die Verzeichnisse, die das Skript ist Weg. Suchen Sie die gesamte Maschine, etwas zu tungci c:\ -r
Dies ist, wie ich es machen werde:
Ich bin der OP (ein neues Konto). Dank manojlds, änderte ich
zu
um die Ausgabe in das selbe Verzeichnis wie das Archiv und die Pflege der Baum-Struktur.
Ich habe auch gezwickt
zu
weil es wirft einen Fehler (7z-Problem?).
Vielen Dank.
Geben diesem einen Versuch. Performance-Tipp, verwenden Sie die Filter-parameter anstelle von where-object.
gci -r -filter *.tar | foreach { c:\7z.exe x -y $_.FullName -o"$(' " '+$_.DirectoryName+' " ')"}