Windows ですべての gz ファイルを解凍する

Windows ですべての gz ファイルを解凍する

.gzファイルがたくさんあるので、すべてを解凍したい名前とフォルダのネストを維持する

Windowsでこれを行うにはどうすればいいですか?7zipこれを完了できる機能はありますか?

答え1

xスイッチと-oスイッチは簡単に使用できますのためにループを使用して7zip適切な代替手段を使用してこのタスクを完了します。

スイッチxスイッチは7zipにフルパスでファイルを抽出するように指示します。-oスイッチは出力ディレクトリへのフルパスを指定します。のためにループは%%~NA抽出したフォルダに元のフォルダと同じ名前を付けるように指示します日本語ファイル拡張子を除いたファイル.gz

バッチ スクリプトの例

@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

その他のリソース

さらに、FOR 変数参照の置換が強化されました。次のオプションの構文を使用できるようになりました。

%~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

答え2

これは完全な再帰ソリューションです。

@ECHO ON

SET SourceDir=C:\source
FOR /R %SourceDir% %%A IN ("*.gz") DO 7z x "%%~A" -o"%%~pA\"

これは元の.gzファイルを削除するものではありませんが、7zパラメータを使用するか、ループdelete %%~A内にコマンドを追加するだけで実行できると思います。FOR

答え3

Winrar には、コンテキスト シェルでこれを行う機能があります。Winrar がインストールされていて、コンテキスト メニュー項目が追加されている場合、すべてのアーカイブをハイライト表示して右クリックすると、各アーカイブを個別のフォルダーに抽出するオプションが表示されます。上記の @PIMP_JUICE_IT の回答で説明されているように 7zip を使用するか、Winrar を使用するかに関係なく、どちらも必要なことを実現できます。一方はグラフィカルで、もう一方はそうではありませんが、必要な操作を実行できます。

関連情報