You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理脚本开发需求:按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

注意事项

  1. 提前配置Chrome:设置默认下载目录为脚本中的TEMP_DOWNLOAD路径,并开启自动下载PDF文件,无需询问保存位置。
  2. 若不想关闭Chrome窗口,可删除脚本中taskkill的行。
  3. 运行批处理前,确保临时目录无其他PDF文件,避免误处理。

内容的提问来源于stack exchange,提问作者Clonzil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 21:15:04