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

Bat脚本调用WebClient.DownloadFile报错且文件过小,求问题排查

问题分析与解决:Google Drive链接下载失败的Bat脚本问题

问题描述

编写Bat脚本从指定Google Drive链接下载文件时,抛出错误:调用DownloadFile(含2个参数)时发生异常:WebClient请求期间出现异常错误,且下载文件大小远小于正常文件。原脚本代码如下:

@echo off

rem ============================================================================
rem -- Set up environment ------------------------------------------------------
rem ============================================================================

set SCRIPT_DIR=%~dp0
set CONTENT_FOLDER=%SCRIPT_DIR%Unreal/CarlaUE4/Content/Carla


rem ============================================================================
rem -- Get the last version to download ----------------------------------------
rem ============================================================================

if not exist "%CONTENT_FOLDER%" mkdir "%CONTENT_FOLDER%"

set CONTENT_ID = BP_Camera
set CONTENT_LINK=https://drive.google.com/uc?export=download&id=1L72sa5Egy1nJbv_7L75nbUV0vjGxzvsK
set CONTENT_FILE=%CONTENT_FOLDER%/%CONTENT_ID%.uasset

)

rem ============================================================================
rem -- Download the content ----------------------------------------------------
rem ============================================================================

echo Downloading "%CONTENT_LINK%"...
powershell -Command "(New-Object System.Net.WebClient).DownloadFile('%CONTENT_LINK%', 'BP_Camera.uasset')"

错误点分析

  • 变量定义语法错误:set CONTENT_ID = BP_Camera中等号两侧有空格,Bat中变量定义不能留空格,否则变量名会变成CONTENT_ID (带尾空格),值为 BP_Camera(带头空格),导致后续CONTENT_FILE路径拼接错误。
  • 无效语法字符:代码中存在一个多余的闭合括号),会导致脚本执行时提前终止,触发语法报错。
  • Google Drive链接限制:直接使用uc?export=download链接下载较大文件时,Google会触发安全验证,WebClient会下载到验证页面的HTML文件(大小很小),而非目标文件。
  • 下载路径错误:Powershell命令中硬编码了文件名BP_Camera.uasset,未使用之前定义的CONTENT_FILE变量,导致文件下载到脚本当前执行目录,而非指定的CONTENT_FOLDER目录。

修正后的脚本

@echo off

rem ============================================================================
rem -- Set up environment ------------------------------------------------------
rem ============================================================================

set "SCRIPT_DIR=%~dp0"
set "CONTENT_FOLDER=%SCRIPT_DIR%Unreal/CarlaUE4/Content/Carla"

rem ============================================================================
rem -- Get the last version to download ----------------------------------------
rem ============================================================================

if not exist "%CONTENT_FOLDER%" mkdir "%CONTENT_FOLDER%"

set "CONTENT_ID=BP_Camera"
set "CONTENT_LINK=https://drive.google.com/uc?export=download&id=1L72sa5Egy1nJbv_7L75nbUV0vjGxzvsK"
set "CONTENT_FILE=%CONTENT_FOLDER%/%CONTENT_ID%.uasset"

rem ============================================================================
rem -- Download the content ----------------------------------------------------
rem ============================================================================

echo Downloading "%CONTENT_LINK%" to "%CONTENT_FILE%"...
powershell -Command "(New-Object System.Net.WebClient).DownloadFile('%CONTENT_LINK%', '%CONTENT_FILE%')"

额外说明

如果下载仍然失败(文件还是HTML),说明Google Drive触发了安全验证,需要改用支持处理验证的下载方式,比如使用Powershell的Invoke-WebRequest并处理Cookie:

powershell -Command "$url='%CONTENT_LINK%'; $output='%CONTENT_FILE%'; $wc=New-Object System.Net.WebClient; $wc.Headers.Add('Cookie', 'download_warning_1L72sa5Egy1nJbv_7L75nbUV0vjGxzvsK=1'); $wc.DownloadFile($url, $output)"

注:download_warning_<文件ID>中的文件ID需要对应你的链接中的ID值,若验证页面变化,可能需要手动获取对应的Cookie值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:01:04