Rename extracted file based on zip file in Batch

2019-02-14 16:44发布

I have multiple zip files with names such as 001.zip, 002.zip, 003.zip and have the potential to go up to 999.zip. Each zip file has exactly one text file. I would like to extract each zip file using Batch, and then rename the text file it extracted to the file name of the zip.

For example, if I extract 001.zip, I want the text file that gets extracted (all the text files that get extracted have different names) to be name 001.txt.

I at least am extracting all the files right now, but I am too unfamiliar with Batch, and am not sure if there is a simple way to do this?

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

2条回答
不美不萌又怎样
2楼-- · 2019-02-14 17:12

for %F in (*.zip) do 7z e "%F" -so >"%~nF.txt" - provided there is only 1 file in in zip archive as you said (shown as if executed directly from command line, if used in batch use %%F)

查看更多
Animai°情兽
3楼-- · 2019-02-14 17:15

Try this

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

Just make sure there are no existing text files in this folder and this should work. It just creates a temporary folder and moves all text files there (only the extracted one will be present at the time but this works as the filename is not known) and renames it to the zip file name.

After all the extractions and renames are done it just moves all the textfiles back to the original folder and deletes the temporary one.

Hope this helps.

查看更多
登录 后发表回答