フォルダ内のすべての.Zipと.rarsとその子を抽出したい
構造は次のようになります。
MAIN_FOLDER
-A folder
- a.Zip
-a.rar
-B folder
- b.Zip
-b.rar
-C folder
....
...
私はすでにこれを試しましたが、うまくいきませんでした
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.Zip) DO (
"C:\Program Files\7-Zip\7z.exe" x %%X
)
popd
)
私はWindowsを使用しており、7-Zipをインストールしています。
追加の質問:最後の子(a.rar、b.rar)から抽出されたすべてのファイルを1つの同じフォルダー(メインフォルダー)に保存できますか?
for /F %%I IN ('dir /b /s *.Zip *.rar') DO (
"C:\Program Files\7-Zip\7z.exe" x -o"%%~dpI" "%%I"
)
for /F %%I IN ('dir /b /s *.Zip *.rar') DO (
これにより、コマンドdir /b /s *.Zip *.rar
によって返されるファイルごとにループが実行されます。 /s
は、サブディレクトリに再帰するようdir
に指示し、/b
をベアフォーマットで出力します。
ファイル名は、後で使用するために%%I
変数に保存されます。プロンプトでこれを入力する場合は、代わりに%I
を使用します。
"C:\Program Files\7-Zip\7z.exe" x -o"%%~dpI" "%%I"
これにより、抽出が実行されます。引数-o"%%~dpI"
は、アーカイブが存在するのと同じディレクトリにファイルを抽出します。その他のオプション:
-o"%%~dpI"
—アーカイブが存在するディレクトリに抽出します。
-o"%%~dpnI"
—アーカイブにちなんで名付けられた階層に新しいディレクトリを作成し、そこに抽出します(つまり、AFolder\archive.Zip
がAFolder\archive\
に抽出します)。
-o"%%~nI"
—アーカイブにちなんで名付けられた現在のディレクトリに新しいディレクトリを作成し、そこに抽出します(つまり、AFolder\archive.Zip
は.\archive\
に抽出します)。
-o
引数を省略します—現在のディレクトリに抽出します。
C:\Temp>tree /F
Folder PATH listing
Volume serial number is 08A4-22E0
C:.
│ batch.bat
│
├───AFolder
│ a.Zip
│
├───BFolder
│ b.Zip
│
└───CFolder
c.Zip
C:\Temp>batch.bat > nul
C:\Temp>tree /F
Folder PATH listing
Volume serial number is 08A4-22E0
C:.
│ batch.bat
│
├───AFolder
│ a.Zip
│ a.Zip.txt
│
├───BFolder
│ b.Zip
│ b.Zip.txt
│
└───CFolder
c.Zip
c.Zip.txt
これは、スペース( "DELIMS =")を含むファイル名をサポートし、上書き(-aos)をスキップするための承認済み回答の更新です。以下のリンクと更新されたコードを参照してください。ありがとう
。batファイルまたはdosコマンドを使用して、ディレクトリ(サブフォルダーを含む)内のすべてのZipを抽出しますhttps://stackoverflow.com/questions/12487491/how-to-handle-space- of-filename-in-batch-for-loophttp://7Zip.bugaco.com/7Zip/MANUAL/switches/overwrite.htm
for /F "DELIMS=" %%I IN ('dir /b /s *.Zip *.rar') DO (
"H:\Program Files\7-Zip\7z.exe" x -aos -o"%%~dpI" "%%I"
)
私は何年も前から sweep.exe を使用しています。現在のディレクトリとすべてのサブディレクトリで同じコマンドを実行します。
アーカイブ内のアーカイブを抽出する場合は、スイープを複数回実行する必要がある場合があります。
あなたは次のようなものを使うことができます:
sweep 7za x -y *.Zip
現在のフォルダー内のすべての.Zipファイルとその下のすべてのフォルダーを開くには。
7Zipコマンドラインバージョンは次のとおりです: http://www.7-Zip.org/download.html
あなたが探していると思います forfiles
コマンド :
forfiles /s /m *.Zip /c "7z x @file"
forfiles /s /m *.rar /c "7z x @file"
7z e -an -air!*.rar -r
現在のディレクトリのサブフォルダから現在のフォルダにすべてのrarファイルを(再帰的に)抽出します。 Zipファイルの場合は-air!*。Zipに変更します。
@echo off
FOR /R %%g IN (.) DO TITLE Extracting from %%~ng & "%~dp07z.exe" x -aou "%%g\*.rar" -o"%%g" & "%~dp07z.exe" & CLS
これをテキストファイルにコピーし、名前をextract.bat
に変更して、アーカイブのある他のフォルダーを含む親フォルダーに配置します。 7z.exe
をextract.bat
ファイルと同じフォルダーに配置するか、上記のコマンドでパスを変更して、7z.exe
のインストール場所を反映させます。これにより、各サブフォルダー内のすべてのRARがRARと同じサブフォルダーに抽出されます。それは(私のガールフレンドのように)「ハウスクリーニング」をしません...
必要に応じて*.rar
を調整してください。