web-dev-qa-db-ja.com

ディレクトリ内のファイルを解凍するWindowsバッチスクリプト

特定のディレクトリにあるすべてのファイルを解凍し、解凍したときにフォルダ名を保持したい。

次のバッチスクリプトは、それほど効果がありません。ファイルをフォルダーに入れずに大量のファイルを投げるだけで、完了すらしません。

ここで何が問題になっていますか?

for /F %%I IN ('dir /b /s *.Zip') DO (

    "C:\Program Files (x86)\7-Zip\7z.exe" x -y -o"%%~dpI" "%%I" 
)
8
Mark Kennedy

これを試して:

for /R "C:\root\folder" %%I in ("*.Zip") do (
  "%ProgramFiles(x86)%\7-Zip\7z.exe" x -y -o"%%~dpI" "%%~fI" 
)

または(Zipファイルにちなんだ名前のフォルダーにファイルを抽出する場合):

for /R "C:\root\folder" %%I in ("*.Zip") do (
  "%ProgramFiles(x86)%\7-Zip\7z.exe" x -y -o"%%~dpnI" "%%~fI" 
)
29
Ansgar Wiechers

上記のAnsgarの応答は私にとってはほぼ完璧でしたが、抽出が成功した場合は、後でアーカイブも削除したいと思いました。私は this を見つけ、それを上記に組み込んで以下を与えました:

for /R "Destination_Folder" %%I in ("*.Zip") do (
  "%ProgramFiles%\7-Zip\7z.exe" x -y -aos -o"%%~dpI" "%%~fI"
  "if errorlevel 1 goto :error"
    del "%%~fI"
  ":error"
)
2
Billy Scott

これを試して。

@echo off
for /F "delims=" %%I IN (' dir /b /s /a-d *.Zip ') DO (
    "C:\Program Files (x86)\7-Zip\7z.exe" x -y -o"%%~dpI\%%~nI" "%%I" 
)
pause
1
foxidrive