web-dev-qa-db-ja.com

7-zipですべてのアーカイブからファイルをバッチ抽出

このコードをバッチで使用したい。最初のステップは、ツリーが次のようになるソースフォルダを入力することです。

enter image description here

私が達成したいのは、ソースフォルダー内のすべてのタイプのアーカイブを、アーカイブが配置されている同じフォルダーに抽出することです。 「archive.Zip」を「folder1」に直接。

以下のコードを使用しますが、宛先変数を設定する方法の手がかりはありません。

SET /P "source="

FOR %%F IN ("%source%\*.Zip") DO "C:\Program Files\7-Zip\7z.exe" x "%source%\%%~nF.Zip"
FOR %%F IN ("%source%\*.7z") DO "C:\Program Files\7-Zip\7z.exe" x "%source%\%%~nF.7z"
FOR %%F IN ("%source%\*.rar") DO "C:\Program Files\7-Zip\7z.exe" x "%source%\%%~nF.rar"
4
Rayearth

7Zipを使用してアーカイブファイルからアーカイブファイルが配置されている同じフォルダーに再帰的に抽出します

-o switch with 7Zip これは、extractコマンドが該当するアーカイブファイルのコンテンツを抽出するための出力ディレクトリのフルパスを指定します。

FOR/F ループと再帰的な [〜#〜] dir [〜#〜] コマンドを使用して、完全なアーカイブパスを反復処理し、それらを-に渡すことができます。 7Zip それに応じて、必要に応じて機能するように置換を使用します。

バッチスクリプト

@ECHO ON

SET source=C:\Users\User\Desktop\Test
FOR /F "TOKENS=*" %%F IN ('DIR /S /B "%source%\*.Zip"') DO "C:\Program Files\7-Zip\7z.exe" x "%%~fF" -o"%%~pF\"
FOR /F "TOKENS=*" %%F IN ('DIR /S /B "%source%\*.7z"') DO "C:\Program Files\7-Zip\7z.exe" x "%%~fF" -o"%%~pF\"
FOR /F "TOKENS=*" %%F IN ('DIR /S /B "%source%\*.rar"') DO "C:\Program Files\7-Zip\7z.exe" x "%%~fF" -o"%%~pF\"
EXIT

その他のリソース

  • [〜#〜] dir [〜#〜]
  • FOR/F

    さらに、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
    
2
Pimp Juice IT