このフォルダのサブディレクトリ内のすべてのアーカイブを抽出するにはどうすればよいですか?


18

フォルダー内のサブディレクトリに含まれる複数のアーカイブを抽出し、アーカイブのあるフォルダーに結果を出力する方法を教えてください。

回答:


22

まず、7-zipをインストールします。

bat内部にアーカイブを含む多くのサブディレクトリを含むディレクトリのルートにファイルを作成します。次に、以下を貼り付けます。

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
)

バットを起動すると、すべてのrar / zipが含まれているフォルダーに解凍されます。

これはどのように作動しますか?

FOR / D / r %% F in( "*")DO(

forループは、現在のディレクトリ内のすべてのフォルダーをループし、パスを変数に入れます%%F

%CD%をプッシュしました

現在のディレクトリをメモリに入れます。

cd %% F

変数からフォルダーを%%F現在のディレクトリとして設定します。

FOR %%X in (*.rar *.zip) DO (

現在のフォルダー内のすべてのファイルrarzipファイルについて、次を実行します。

"C:\Program Files\7-zip\7z.exe" x "%%X"

ファイルに対して7-zipを実行します。%%X一部のファイル名にはスペースが含まれているため、引用符が必要です。

popd

以前にメモリに保存した前のディレクトリに戻ります。

これが誰かに役立つことを願っています。


3

Windows Vistaからスクリプトを実行する際に問題が発生しました。コードを実行しても何も起こりませんでした。スクリプトを実行するには管理者である必要がありました。.batファイルを右クリックして「管理者として実行」すると、何らかの理由でsystem32フォルダーで開始されたため(正しく覚えていれば)動作しませんでした。これを解決するには、Windows環境変数(ここで説明:Windows環境変数)%〜dp0を使用して、スクリプトの実行元のディレクトリに戻ります。

@echo on
cd %~dp0

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
)

* .rarまたは* .zipファイルがスクリプトと同じレベルにないことを確認してください。それらは1レベル下でなければなりません。

このコメントが誰かのお役に立てば幸いです。


これは私にとってはうまくいきました。64ビットのWindows 7を実行しているため、パスを「C:\ Program Files」から「C:\ Program Files(x86)」に変更する必要がありました。
Contango

1
find . -name "*.zip" |  while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;

現在のディレクトリで再帰的検索を開始し、.zipで終わるすべてのファイルを見つけて、それをループにパイプします。見つかったすべてのファイルに対して、ファイルに対してunzipコマンドを実行し、出力をファイルのディレクトリに振り分けます。


1

ただし、上記の答えは機能しますが、とを実行Windows 64-bitしている7-Zip 32-bit場合、正しいパスはC:\Program Files (x86)\7-Zip7-Zipです。以下は私のために働いたスクリプトです。

@echo on
cd %~dp0

FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
    FOR %%X in (*.rar *.zip) DO (
        "C:\Program Files (x86)\7-zip\7z.exe" x %%X
    )
    popd
)

ただし、7zipの64ビットバージョンを使用している場合、正しいパスは次のとおりです。元の回答に記載されている「C:\ Program Files \ 7-zip \ 7z.exe」。
ローンアダムス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.