Windows에서 모든 gz 파일을 압축 해제합니다.

Windows에서 모든 gz 파일을 압축 해제합니다.

.gz 파일이 많아서 모두 압축을 풀고 싶습니다.이름과 폴더 중첩 유지.

Windows에서 이 작업을 어떻게 수행할 수 있습니까? 하다7zip이 작업을 완료할 수 있는 기능이 있나요?

답변1

x스위치와 -o스위치를 간단하게 사용할 수 있습니다.을 위한루프를 사용하여7zip그에 따라 대체 항목을 사용하여 이 작업을 완료합니다.

스위치 x스위치는 7zip에게 전체 경로로 파일을 추출하도록 지시합니다. 스위치 -o는 출력 디렉터리의 전체 경로를 지정합니다. 그만큼을 위한루프는 %%~NA추출된 폴더의 이름을 원본과 동일한 이름으로 지정하도록 지시합니다.gz파일 확장자를 뺀 파일입니다 .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를 사용하든 둘 다 원하는 것을 달성할 수 있습니다. 하나는 그래픽이고 다른 하나는 그래픽이 아니지만 원하는 대로 수행합니다.

관련 정보