批处理脚本下载网络JPG图片并重命名问题求助
批量下载JPG图片的Batch脚本解决方案
需求背景
需要编写Batch脚本,从存储多个图片URL的txt文件中批量下载JPG图片,URL格式示例为https:\\abc.com\def\ghi.jpg\jklmno.pqrstuv.wxyz。
示例URL文件(files.txt)
https:\\abc.com\def\ghi.jpg\jklmno.pqrstuv.wxyz https:\\abc.com\def\ghi2.jpg-orig\jklmno.pqrstuv.wxyz https:\\abc.com\def\ghi3.jpg\jklmno.pqrstuv.wxyz https:\\abc.com\def\ghi4.jpg-orig\jklmno.pqrstuv.wxyz https:\\abc.com\def\ghi5.jpg?jklmno.pqrstuv.wxyz https:\\abc.com\def\ghi6
初始尝试的问题
最初编写的脚本仅能下载最后一个文件,原因是每次循环都将输出文件名固定为ghi.jpg,后续下载会直接覆盖之前的文件:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION for /F %%x in (files.txt) do ( powershell -Command "Invoke-WebRequest %%x -Outfile ghi.jpg" ) echo "Done!" cls pause
预期目标
下载图片时按URL中的对应名称重命名,.jpg-orig格式需转换为.jpg,预期结果如下:
Download **ghi.jpg** from *https:\\abc.com\def\ghi.jpg\jklmno.pqrstuv.wxyz* Download **ghi2.jpg** from *https:\\abc.com\def\ghi2.jpg-orig\jklmno.pqrstuv.wxyz* Download **ghi3.jpg** from *https:\\abc.com\def\ghi3.jpg\jklmno.pqrstuv.wxyz* Download **ghi4.jpg** from *https:\\abc.com\def\ghi4.jpg-orig\jklmno.pqrstuv.wxyz* Download **ghi5.jpg** from *https:\\abc.com\def\ghi5.jpg?jklmno.pqrstuv.wxyz* Download **ghi6.jpg** from *https:\\abc.com\def\ghi6.jpg\jklmno.pqrstuv.wxyz*
思路框架
核心逻辑是从URL中提取目标文件名,替换到下载命令的输出文件名参数中:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION for /F %%x in (files.txt) do ( **[%%x是URL,需从中提取文件名(xxx.jpg)]** powershell -Command "Invoke-WebRequest %%x -Outfile **[填入提取的文件名]**" ) echo "Done!" cls pause
最终解决方案(2023年11月26日更新)
通过先生成包含原始URL和处理后文件名路径的中间文件,再进行二次循环实现批量下载:
DownloadJPG.bat 脚本代码
@echo off SETLOCAL ENABLEDELAYEDEXPANSION break>LinkAndFileName.txt for /f %%a In (Link.txt) do ( for /f "delims=?" %%b In ("%%a") do ( echo %%a %%b>>LinkAndFileName.txt ) ) for /F "tokens=1,2" %%x in (LinkAndFileName.txt) do ( echo %%x echo %%~ny.jpg powershell -Command "Invoke-WebRequest '%%x' -Outfile 'Output\%%~ny.jpg'" ) pause
中间文件(LinkAndFileName.txt)内容
https:\\abc.com\def\ghi.jpg\jklmno.pqrstuv.wxyz https:\\abc.com\def\ghi.jpg https:\\abc.com\def\ghi2.jpg-orig\jklmno.pqrstuv.wxyz https:\\abc.com\def\ghi2.jpg-orig https:\\abc.com\def\ghi3.jpg\jklmno.pqrstuv.wxyz https:\\abc.com\def\ghi3.jpg https:\\abc.com\def\ghi4.jpg-orig\jklmno.pqrstuv.wxyz https:\\abc.com\def\ghi4.jpg-orig https:\\abc.com\def\ghi5.jpg?jklmno.pqrstuv.wxyz https:\\abc.com\def\ghi5.jpg https:\\abc.com\def\ghi6 https:\\abc.com\def\ghi6
最终下载结果
ghi.jpg from https:\\abc.com\def\ghi.jpg\jklmno.pqrstuv.wxyz ghi2.jpg from https:\\abc.com\def\ghi2.jpg-orig\jklmno.pqrstuv.wxyz ghi3.jpg from https:\\abc.com\def\ghi3.jpg\jklmno.pqrstuv.wxyz ghi4.jpg from https:\\abc.com\def\ghi4.jpg-orig\jklmno.pqrstuv.wxyz ghi5.jpg from https:\\abc.com\def\ghi5.jpg?jklmno.pqrstuv.wxyz ghi6.jpg from https:\\abc.com\def\ghi6
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

