7zip を使用して複数のフォルダ内の複数の zip ファイルを解凍する

7zip を使用して複数のフォルダ内の複数の zip ファイルを解凍する

大きなフォルダ ツリーがあります。A、B、C、…、Z という名前のフォルダがあるとします。各フォルダ内には、いくつかの zip ファイルがあります。

フォルダー内のすべての zip を選択し、右クリックして 7zip を選択し、「*」に抽出を選択すると、問題なく動作します。たとえば、フォルダー A 内の zip に対してこれを行うと、A には各 zip のフォルダーが含まれ、その中に zip の内容が含まれます。

私がやりたいのは、すべてのフォルダー (AZ) 内のすべての zip ファイルを検索し、この操作を一度に実行して、各フォルダー (AZ) に、そこに含まれるすべての zip のフォルダーが作成されるようにすることです。

実際には、7zip は最初に遭遇したフォルダー (たとえば A) にすべてを抽出します。

誰かこれを行う方法を知っていますか?

答え1

Windows のコマンドラインを使うこともできます。Windows のロゴをクリックして、cmdと入力して を押しますENTER。次に と入力して、ZIP ファイルがあるサブディレクトリを含むディレクトリに移動します。別のドライブにある場合は、 ともう一度入力してcd c:\my\example\dirそのドライブに切り替えます。これで、正しいパスがカーソルの前に表示されます。次に と入力します。ENTERi:ENTER

for /F "usebackq" %f in (`dir /b/a:d`) do @echo %f

ENTER.dir /b/a:dはディレクトリごとに 1 行を返します。これらの行ごとに、後ろのコマンドdoが実行されます。は@echo %f見つかった名前を画面に書き込むだけなので、 を削除した場合に何が実行されるか安全に制御できます@echo。あなたの場合は、次のようなものが必要になります。

for /F "usebackq" %f in (`dir /b/a:d`) do C:\APPS\7-Zip\7z.exe x .\%f\*.zip -o%f

これは各サブディレクトリに対して7zipコマンドライン実行ファイルを呼び出し(システムへのパスを調整する必要がありますC:\APPS\7-Zip\)、現在のサブディレクトリへのフルパスを含むすべてのzipファイルを抽出します。7zip構文の詳細については、https://www.dotnetperls.com/7-zip-examples

これを何度も繰り返すと、単純な。コウモリ/.cmd ファイルに上記のコマンドが含まれていますが、動作させるには % を %% に置き換える必要がある可能性が高いです。

答え2

希望通りに動作しました。正しいコマンドは次のとおりです。

for /F "tokens=*" %%g in ('dir /b/a:d') do "C:\Program Files\7-Zip\7z.exe" x ".\%%g\*.zip" -o"%g\*" -aos

答え3

Windows を使用している場合は、フォルダー A、B、C、D を含むルート フォルダーに移動して検索するか*.zip*.rarWindows 検索ですべての zip を選択/強調表示し、7-zip を使用して必要な操作を実行します。dolphin(linux) でも問題なく動作するはずです。

関連情報