私は大量のサブフォルダを含むフォルダを持っています。これらのサブフォルダ内には圧縮ファイルがあります。
これらのファイルをZipファイルにちなんで名付けられたフォルダに解凍する方法を考えていたので、たとえば次のようにします。
C:\Archives\Photos\A.Zip
C:\Archives\Videos\B.Zip
C:\Archives\Documents\C.Zip
に変わります
C:\Archives\Photos\A\
C:\Archives\Videos\B\
C:\Archives\Documents\C\
私は現在これを行うことができますが、一度に1つのフォルダーでそれを行う場合にのみ、一度にすべてを行う方法があるかどうか疑問に思っていました。
@Echo off
For %%F in (Photos,Videos,Documents) Do (
For /F "delims=" %%Z in ('Dir /B/S/A-D "C:\Archives\%%F\*.Zip" 2^>Nul') Do (
7z x "%%~fZ" -o"%%~dpnZ\" && Rem Del "%%~fZ"
)
)
正常に解凍されたZipファイルを破棄する場合は、delの前にあるRem
を削除します。
バッチは 変数〜修飾子の場合 を使用して、完全なファイル名の一部のみを使用します
これを達成するためのPowerShellワンライナー:
Get-ChildItem -Filter *.Zip -Recurse C:\Archives | % { $_.FullName } | Split-Path | Get-Unique | % { cd $_ ; &'C:\Program Files\7-Zip\7z.exe' x *.Zip -o* }
次に、各セクションの説明を示します。各セクションは、次のセクションにパイプされ、Powershellによって順に実行されます。
仮定:
この質問を調査しているときに、PowerShellよりもbashを好むという結論に達しました:-)