我有多个zip文件,名称如001.zip,002.zip,003.zip,有可能达到999.zip。每个zip文件只有一个文本文件。我想使用Batch提取每个zip文件,然后将它提取的文本文件重命名为zip文件名。
例如,如果我提取001.zip,我希望提取的文本文件(所有提取的文本文件都有不同的名称)为名称001.txt。
我至少现在正在提取所有文件,但我对Batch太熟悉了,我不确定是否有一种简单的方法可以做到这一点?
cd test
echo Decompressing zip4 data.
7z e *.zip
答案 0 :(得分: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文件名。
完成所有提取和重命名后,只需将所有文本文件移回原始文件夹并删除临时文件夹。
希望这有帮助。
答案 1 :(得分:3)
for %F in (*.zip) do 7z e "%F" -so >"%~nF.txt"
- 如前所述,如果zip存档中只有只有1个文件
(显示为直接从命令行执行,如果在批处理中使用%%F
)
答案 2 :(得分:0)
我有一个非常相似的问题,我采用了 wmz 的答案,并为批处理文件应用了 %%F 扭曲。
我的情况在小细节上略有不同:
我的解决方案是一个具有此核心功能的 CMD/Batch 文件:
for %%F in (*.zip, *.7z) do 7z e "%%F" *.jpg -so >"%%~nF.jpg"