美文网首页
Windows bat批处理脚本实现批量下载文件 2024-

Windows bat批处理脚本实现批量下载文件 2024-

作者: 阿然学编程 | 来源:发表于2024-11-07 12:07 被阅读0次
  • 保存脚本为GBK编码

打开记事本或任何文本编辑器。
将脚本代码复制到记事本中。
选择“文件” -> “另存为”。
在“编码”下拉菜单中选择“ANSI”(这实际上是GBK编码)。-
保存文件为 download_files.bat

  • 运行脚本(鼠标左键暂停脚本,右键继续执行)

将上述脚本保存为 download_files.bat
将 download_files.bat 放在包含 .txt 文件的文件夹中。
双击 download_files.bat 文件运行脚本。

  • 特此注意 :文件夹名中文会导致程序闪退,尽量使用英文或者数字
@echo off
:: 设置代码页为GBK
chcp 936 > nul

setlocal enabledelayedexpansion

:: 获取当前日期
for /f "tokens=2 delims==" %%i in ('"wmic os get localdatetime /value"') do set datetime=%%i
set year=!datetime:~0,4!
set month=!datetime:~4,2!
set day=!datetime:~6,2!

:: 设置目标文件夹
set TARGET_FOLDER=%cd%\!year!\!month!\!day!

:: 检查目标文件夹是否存在,不存在则创建
if not exist "%TARGET_FOLDER%" (
    echo 目标文件夹 %TARGET_FOLDER% 不存在,正在创建...
    mkdir "%TARGET_FOLDER%"
    if not exist "%TARGET_FOLDER%" (
        echo 无法创建目标文件夹 %TARGET_FOLDER%。
        pause
        exit /b
    ) else (
        echo 目标文件夹 %TARGET_FOLDER% 已创建。
    )
) else (
    echo 目标文件夹 %TARGET_FOLDER% 已存在。
)

:: 设置下载成功的URL记录文件
set SUCCESS_FILE=%TARGET_FOLDER%\downloaded_urls.txt

:: 创建或清空下载成功的URL记录文件
if exist "%SUCCESS_FILE%" del "%SUCCESS_FILE%"

:: 初始化计数器
set success_count=0

:: 设置要处理的文件类型
set FILE_TYPE=*.txt

:: 遍历当前文件夹内的所有指定类型的文件
for %%f in (%FILE_TYPE%) do (
    set FILE=%%f
    echo 正在处理文件: !FILE!

    :: 读取URL列表
    for /f "tokens=*" %%a in (!FILE!) do (
        set URL=%%a

        :: 简单的URL验证
        if "!URL:~0,7!" == "http://" (          
            echo URL: !URL!
            :: 提取文件名
            for %%i in ("!URL!") do set FILENAME=%TARGET_FOLDER%\%%~nxi
            echo 文件名: !FILENAME!

            :: 使用curl下载文件,显示进度条并支持断点续传
            curl -# -C - -o "!FILENAME!" "!URL!"

            :: 使用wget下载文件,显示进度条并支持断点续传
            rem wget -c -v -O "!FILENAME!" "!URL!"

            if %errorlevel% equ 0 (
                echo 下载成功: !FILENAME!
                echo !URL! >> "%SUCCESS_FILE%"
                set /a success_count+=1
            ) else (
                echo 下载失败: !URL!
            )
        ) else if "!URL:~0,8!" == "https://" (
            echo URL: !URL!
            :: 提取文件名
            for %%i in ("!URL!") do set FILENAME=%TARGET_FOLDER%\%%~nxi
            echo 文件名: !FILENAME!

            :: 使用curl下载文件,显示进度条并支持断点续传
            curl -# -C - -o "!FILENAME!" "!URL!"

            :: 使用wget下载文件,显示进度条并支持断点续传
            rem wget -c -v -O "!FILENAME!" "!URL!"

            if %errorlevel% equ 0 (
                echo 下载成功: !FILENAME!
                echo !URL! >> "%SUCCESS_FILE%"
                set /a success_count+=1
            ) else (
                echo 下载失败: !URL!
            )
        ) else (
            echo 跳过非URL行: !URL!
        )
    )
)

:: 显示下载成功的文件数量
echo 总共下载成功的文件数量: %success_count%

:: 将下载成功的文件数量写入到记录文件
echo 总共下载成功的文件数量: %success_count% >> "%SUCCESS_FILE%"

endlocal
pause
image.png
@echo off
:: 设置代码页为GBK
chcp 936 > nul

setlocal enabledelayedexpansion

:: 获取当前日期
for /f "tokens=2 delims==" %%i in ('"wmic os get localdatetime /value"') do set datetime=%%i
set year=!datetime:~0,4!
set month=!datetime:~4,2!
set day=!datetime:~6,2!

:: 设置目标文件夹
set TARGET_FOLDER=%cd%\!year!\!month!\!day!

:: 检查目标文件夹是否存在,不存在则创建
if not exist "%TARGET_FOLDER%" (
    echo 目标文件夹 %TARGET_FOLDER% 不存在,正在创建...
    mkdir "%TARGET_FOLDER%"
    if not exist "%TARGET_FOLDER%" (
        echo 无法创建目标文件夹 %TARGET_FOLDER%。
        pause
        exit /b
    ) else (
        echo 目标文件夹 %TARGET_FOLDER% 已创建。
    )
) else (
    echo 目标文件夹 %TARGET_FOLDER% 已存在。
)

:: 设置下载成功的URL记录文件
set SUCCESS_FILE=%TARGET_FOLDER%\downloaded_urls.txt

:: 创建或清空下载成功的URL记录文件
if exist "%SUCCESS_FILE%" del "%SUCCESS_FILE%"

:: 初始化计数器
set success_count=0

:: 设置要处理的文件类型
set FILE_TYPE=*.txt

:: 遍历当前文件夹内的所有指定类型的文件
for %%f in (%FILE_TYPE%) do (
    set FILE=%%f
    echo 正在处理文件: !FILE!

    :: 读取URL列表并下载文件
    for /f "tokens=*" %%a in (!FILE!) do (
        set "URL=%%a"
        
        :: 检查URL是否以http://或https://开头
        if "!URL:~0,7!"=="http://" (
            set "VALID_URL=true"
        ) else if "!URL:~0,8!"=="https://" (
            set "VALID_URL=true"
        ) else (
            set "VALID_URL=false"
        )

        if "!VALID_URL!"=="true" (
            echo 下载: !URL!
            
            :: 提取文件名
            for %%i in ("!URL!") do set "FILENAME=%TARGET_FOLDER%\%%~nxi"
            
            :: 使用curl下载文件
            curl -# -C - -o "!FILENAME!" "!URL!"
            if !errorlevel! equ 0 (
                echo 成功: !FILENAME!
                echo !URL! >> "%SUCCESS_FILE%"
                set /a success_count+=1
            ) else (
                echo 失败: !URL!
            )
        ) else (
            echo 跳过非URL行: !URL!
        )
    )
)

:: 显示并记录成功数量
echo 下载成功文件数量: %success_count%
echo 下载成功文件数量: %success_count% >> "%SUCCESS_FILE%"

endlocal
pause

相关文章

网友评论

      本文标题:Windows bat批处理脚本实现批量下载文件 2024-

      本文链接:https://www.haomeiwen.com/subject/npgtjjtx.html