web-dev-qa-db-ja.com

「ここで抽出」コマンドをバッチ処理します

「ExtractHere ...」コマンドを完全なフォルダにバッチ処理したいと思います。すべてのタイプのアーカイブは、アーカイブファイルの名前で現在のフォルダーに解凍する必要があります。 * .ZipだけのBATCHスクリプトをいくつか見つけましたが、アーカイバが開くことができる限り、アーカイブの種類は関係ありません。

どんな種類のアーカイバがそのようなバッチ機能を持っているか知っている人はいますか? 7-Zipやwinrarでは見つからないようです。

疑似:

Given folder x
foreach archiveFile in x or descendant of x
unzip archiveFile.extension >> "folder of archiveFile/archiveFile"

更新
Zipファイルについてのみ以下を試しました。

dir /s /b *.Zip > allzips.txt
for /F %%x in (allzips.txt) do unzip %%x

ここで、unzipはまだ不明な関数です。

2
Marnix

[〜#〜] edit [〜#〜]指定:バッチスクリプトを使用します。

これを実現するには、サードパーティのZipツール(7z.exeと呼ばれる7-Zipコマンドラインバージョンを強くお勧めします)を使用することをお勧めします。

7zの場合、構文は次のとおりです。

7z <command> [<switch>...] <base_archive_name> [<arguments>...]

コマンドを抽出するには、次のようにします。

7z e file.Zip -y

-yスイッチは、上書き要求など、抽出中に発生する可能性のある質問に対する「はい」の回答を想定しています。

したがって、コマンドは次のようになります

CD "C:\Location\Of\ZipFiles"
FOR /F "USEBACKQ tokens=*" %%F IN (`DIR /b *.Zip`) DO (7z e "%%F" -y)

それらを別の場所に出力する場合は、-oスイッチを使用して、ディレクトリを指定できます。

7z e "%%F" -y -oC:\Some\Other\Folder\

編集:

フルパスを使用して抽出を実行し、すべてのZipアーカイブのみを指定するには、次を使用します。

7z x -tzip "C:\Location\of\zips\*"

またはさらにnutzier ... C:ドライブ上のすべてのZipファイル:

7z x -r -tzip "C:\*"

EDIT2:

出力ファイルと互換性を持たせるには、次のようにします。

dir /s /b *.Zip > allzips.txt
for /F %%x in (allzips.txt) do (7z x -tzip "%%x")
5
Mechaflash