4

こんにちは、私はにたくさんのzipファイルを持っていますg:\toto。これらのzipにはいくつかのファイルが含まれています。g:\toto\extracted同じディレクトリ( )にあるすべてのzipを抽出してから、zipのさまざまなファイルの名前を変更したいと思います。

例1:

www_12567.vp.zip : 3 files : alpha.doc, beta.xls, teta.doc

抽出後、ファイルの名前がzipの名前に変更されます

www_12567.vp.alpha.doc, www_12567.vp.beta.xls, www_12567.vp.teta.doc

例2:

www_12.vp.zip : 3 files : al.doc, bea.xls, tta.doc
www_12.vp.al.doc, www_12.vp.bea.xls, www_12.vp.tta.doc

この質問を見つけましたが、.txtについて説明しており、zipには1つのファイルが含まれているため、機能しません。

4

1 に答える 1

4

アーカイブの内容がわからないと、他のファイルがすでに含まれている可能性のあるディレクトリにファイルを配置しているため、名前を変更するファイルを知ることができません。

ただし、ファイルを一時的に配置するための専用ディレクトリがあれば、これははるかに簡単です。使用方法は次のとおりです。

@ECHO OFF
SET "srcdir=G:\toto"
SET "tgtdir=G:\toto\extracted"
SET "tmpdir=G:\toto\extracted-tmp"
FOR %%Z IN ("%srcdir%\*.zip") DO (
  unpack "%%Z" with your favourite tool into "%tmpdir%"
  FOR %%I IN ("%tmpdir%\*") DO MOVE "%%I" "%tgtdir%\%%~nZ.%%~nxI"
)

もちろん、バッチファイルを実行する前に一時ディレクトリを空にする必要があります。ループの前のどこかに追加DEL "%tmpdir%\*"して、それが確実に行われるようにすることができます。

もう1つの注意点は、上記はアーカイブにサブディレクトリが含まれていないこと、または少なくともファイルがサブディレクトリなしで抽出されていることを前提としています。

アップデート

7-Zipアーカイバを使用して.zipファイルを操作している場合、extractコマンドは次のようになります。

7z e "%%Z" -o"%tmpdir%"

免責事項:私は7-Zipのアクティブユーザーではありません。これは、上記のコマンドを思い付くための参照として使用したものです。

于 2013-03-11T00:35:44.123 に答える