批处理脚本开发需求:按URL下载PDF并指定信息重命名
批量下载并重命名PDF的批处理解决方案
以下是符合需求的批处理脚本,实现逐个处理URL、等待下载完成后重命名移动的逻辑:
@echo off setlocal enabledelayedexpansion :: 配置目录(请根据实际路径修改) set "TEMP_DOWNLOAD=C:\Temp\PDF_Download_Temp" set "TARGET_FOLDER=C:\Temp\PDF_Final" :: 创建目录(忽略已存在的错误) mkdir "%TEMP_DOWNLOAD%" 2>nul mkdir "%TARGET_FOLDER%" 2>nul :: URL与重命名规则的列表文件(每行格式:URL|新文件名前缀) set "INVOICE_LIST=invoice_list.txt" :: 遍历列表中的每一项 for /f "tokens=1,2 delims=|" %%u in (%INVOICE_LIST%) do ( set "CURRENT_URL=%%u" set "NEW_FILENAME=%%v" echo === 开始处理: !NEW_FILENAME! === :: 清空临时目录,确保仅保留当前下载的PDF del "%TEMP_DOWNLOAD%\*.pdf" /q 2>nul :: 启动Chrome下载PDF(需提前设置Chrome自动下载PDF到临时目录) start "" chrome "!CURRENT_URL!" :: 初始化超时计数器 set "WAIT_COUNTER=0" :CHECK_DOWNLOAD :: 检测临时目录是否有PDF文件 if exist "%TEMP_DOWNLOAD%\*.pdf" ( :: 找到PDF,移动并重命名 for /f "delims=" %%f in ('dir /b "%TEMP_DOWNLOAD%\*.pdf"') do ( move "%TEMP_DOWNLOAD%\%%f" "%TARGET_FOLDER%\!NEW_FILENAME!.pdf" >nul echo 处理完成: !NEW_FILENAME!.pdf ) goto NEXT_ITEM ) else ( :: 计数器递增,判断是否超时 set /a WAIT_COUNTER+=1 if !WAIT_COUNTER! equ 20 ( echo 超时未下载: !NEW_FILENAME! goto NEXT_ITEM ) :: 等待1秒后重试 timeout /t 1 /nobreak >nul goto CHECK_DOWNLOAD ) :NEXT_ITEM :: 关闭Chrome(可选,避免窗口过多) taskkill /im chrome.exe /f >nul 2>nul ) echo 所有任务处理完毕! endlocal
关键逻辑说明
- 延迟变量扩展:启用
enabledelayedexpansion确保循环内的变量能动态更新。 - 临时目录清空:每次处理新URL前清空临时目录,避免残留文件干扰判断。
- 下载检测循环:最多等待20秒(20次1秒等待),超时则跳过当前URL。
- 重命名移动:通过
dir /b获取临时目录中的乱码PDF文件名,移动时直接替换为指定名称。
配合Excel生成任务列表(VBA脚本)
由于你熟悉VBA,可以用以下脚本从Excel导出URL和对应重命名规则到invoice_list.txt(假设A列是URL,B列是发票编号,C列是供应商名称):
Sub GenerateInvoiceList() Dim fso As Object Dim listFile As Object Dim lastRow As Long Dim i As Long Set fso = CreateObject("Scripting.FileSystemObject") Set listFile = fso.CreateTextFile("invoice_list.txt", True) lastRow = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row ' 从第2行开始(假设第1行是表头) For i = 2 To lastRow Dim urlStr As String Dim nameStr As String urlStr = ThisWorkbook.Sheets("Sheet1").Cells(i, "A").Value nameStr = ThisWorkbook.Sheets("Sheet1").Cells(i, "B").Value & "_" & ThisWorkbook.Sheets("Sheet1").Cells(i, "C").Value listFile.WriteLine urlStr & "|" & nameStr Next i listFile.Close MsgBox "任务列表已生成,可运行批处理脚本!" End Sub
注意事项
- 提前配置Chrome:设置默认下载目录为脚本中的
TEMP_DOWNLOAD路径,并开启自动下载PDF文件,无需询问保存位置。 - 若不想关闭Chrome窗口,可删除脚本中
taskkill的行。 - 运行批处理前,确保临时目录无其他PDF文件,避免误处理。
内容的提问来源于stack exchange,提问作者Clonzil
相关产品推荐
相关产品推荐

