4

001.zip、002.zip、003.zipなどの名前のzipファイルが複数あり、999.zipまで上がる可能性があります。各zipファイルには1つのテキストファイルがあります。Batchを使用して各zipファイルを抽出し、抽出したテキストファイルの名前をzipのファイル名に変更したいと思います。

たとえば、001.zipを抽出する場合、抽出されるテキストファイル(抽出されるすべてのテキストファイルの名前は異なります)を001.txtという名前にします。

少なくとも現在、すべてのファイルを抽出していますが、Batchに慣れていないため、これを行う簡単な方法があるかどうかわかりません。

cd test
echo     Decompressing zip4 data.
7z e *.zip
4

3 に答える 3

5

これを試して

md textfiles
for %%f in (*.7z) do (
7z e "%%f"
move *.txt textfiles\%%~nf.txt
)
xcopy textfiles\*.txt originalfolder
rd textfiles /s /q

このフォルダに既存のテキストファイルがないことを確認してください。これで機能するはずです。一時フォルダを作成し、そこにすべてのテキストファイルを移動し(抽出されたものだけがその時点で存在しますが、ファイル名が不明であるためこれは機能します)、名前をzipファイル名に変更します。

すべての抽出と名前変更が行われた後、すべてのテキストファイルを元のフォルダーに戻し、一時的なフォルダーを削除します。

お役に立てれば。

于 2012-07-24T16:11:39.703 に答える
5

for %F in (*.zip) do 7z e "%F" -so >"%~nF.txt"-あなたが言ったようにzipアーカイブに1つのファイルしかない場合(バッチ使用で使用される場合、コマンドラインから直接実行されたかのように表示されます%%F

于 2012-07-24T16:39:51.600 に答える
0

私は非常によく似た問題を抱えていて、バッチファイルに%%Fツイストを適用したwmzによる回答を採用しました。

私の状況は細部が少し異なっていました:

  • 1つのディレクトリに多数のZipおよび7-Zipアーカイブファイル(つまり、複数のアーカイブタイプ)
  • すべてのアーカイブファイルには、(他のファイルの中でも)正確に1つのJPGファイルが含まれています
  • すべてのアーカイブのすべてのJPGには、異なる(ランダム化された)名前があります
  • すべてのアーカイブのJPGファイルのみを抽出する必要があります
  • 抽出されたファイルは、「archive-name.jpg」のような名前に変更する必要があります

私の解決策は、このコア機能を備えたCMD/バッチファイルでした。

for %%F in (*.zip, *.7z) do 7z e "%%F" *.jpg -so >"%%~nF.jpg"
于 2021-01-21T02:29:12.707 に答える