Ich habe viele .gz-Dateien und möchte sie alle entpackenBeibehaltung ihres Namens und ihrer Ordnerverschachtelung.
Wie kann ich das unter Windows machen?7zipverfügen Sie über eine Funktion, die dies vervollständigen könnte?
Antwort1
Sie können den x
Schalter und den -o
Schalter mit einem einfachenFÜRSchleife mit7zipdiese Aufgabe durch entsprechende Ersetzungen zu erledigen.
Der x
Schalter weist 7zip an, Dateien mit den vollständigen Pfaden zu extrahieren. Der -o
Schalter gibt den vollständigen Pfad zum Ausgabeverzeichnis an. DerFÜRloop %%~NA
weist den extrahierten Ordner an, denselben Namen wie das Original zu verwenden.gzDatei abzüglich der .gz
Dateierweiterung.
Batch-Skriptbeispiel
@ECHO ON
SET SourceDir=C:\SourceFolder
SET OutputDir=C:\OutputFolder
FOR %%A IN ("%SourceDir%\*.gz") DO 7z x "%%~A" -o"%OutPutDir%\%%~NA"
::::FOR %A IN ("%SourceDir%\*.gz") DO 7z x "%~A" -o"%OutPutDir%\%~NA"
GOTO EOF
Weitere Ressourcen
- FÜR
FOR /?
Darüber hinaus wurde die Ersetzung von FOR-Variablenreferenzen verbessert. Sie können jetzt die folgende optionale Syntax verwenden:
%~I - expands %I removing any surrounding quotes (") %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only %~sI - expanded path contains short names only %~aI - expands %I to file attributes of file %~tI - expands %I to date/time of file %~zI - expands %I to size of file %~$PATH:I - searches the directories listed in the PATH environment variable and expands %I to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string
7z --help
Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [<@listfiles...>] <Commands> a : Add files to archive b : Benchmark d : Delete files from archive e : Extract files from archive (without using directory names) h : Calculate hash values for files i : Show information about supported formats l : List contents of archive rn : Rename files in archive t : Test integrity of archive u : Update files to archive x : eXtract files with full paths <Switches> -- : Stop switches parsing -ai[r[-|0]]{@listfile|!wildcard} : Include archives -ax[r[-|0]]{@listfile|!wildcard} : eXclude archives -ao{a|s|t|u} : set Overwrite mode -an : disable archive_name field -bb[0-3] : set output log level -bd : disable progress indicator -bs{o|e|p}{0|1|2} : set output stream for output/error/progress line -bt : show execution time statistics -i[r[-|0]]{@listfile|!wildcard} : Include filenames -m{Parameters} : set compression Method -mmt[N] : set number of CPU threads -o{Directory} : set Output directory -p{Password} : set Password -r[-|0] : Recurse subdirectories -sa{a|e|s} : set Archive name mode -scc{UTF-8|WIN|DOS} : set charset for for console input/output -scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files -scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands -sdel : delete files after compression -seml[.] : send archive by email -sfx[{name}] : Create SFX archive -si[{name}] : read data from stdin -slp : set Large Pages mode -slt : show technical information for l (List) command -snh : store hard links as links -snl : store symbolic links as links -sni : store NT security information -sns[-] : store NTFS alternate streams -so : write data to stdout -spd : disable wildcard matching for file names -spe : eliminate duplication of root folder for extract command -spf : use fully qualified file paths -ssc[-] : set sensitive case mode -ssw : compress shared files -stl : set archive timestamp from the most recently modified file -stm{HexMask} : set CPU thread affinity mask (hexadecimal number) -stx{Type} : exclude archive type -t{Type} : Set type of archive -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options -v{Size}[b|k|m|g] : Create volumes -w[{path}] : assign Work directory. Empty path means a temporary directory -x[r[-|0]]{@listfile|!wildcard} : eXclude filenames -y : assume Yes on all queries
Antwort2
Dies ist die vollständig rekursive Lösung.
@ECHO ON
SET SourceDir=C:\source
FOR /R %SourceDir% %%A IN ("*.gz") DO 7z x "%%~A" -o"%%~pA\"
Dadurch werden die ursprünglichen .gz-Dateien nicht gelöscht. Ich denke, dies kann mit einem 7z-Parameter oder einfach durch Hinzufügen eines delete %%~A
Befehls in der FOR
Schleife erreicht werden.
Antwort3
Winrar kann dies in der Kontextshell tun, wenn Sie Winrar installiert haben und Kontextmenüelemente hinzugefügt haben. Wenn Sie alle Ihre Archive markiert und dann mit der rechten Maustaste geklickt haben, wird die Option angezeigt, jedes Archiv in einen eigenen Ordner zu extrahieren. Ob Sie 7zip verwenden, wie in der obigen Antwort von @PIMP_JUICE_IT beschrieben, oder Winrar, beide können das erreichen, wonach Sie suchen, nur ist eines grafisch und das andere nicht, aber es tut, was Sie wollen.