如何修改youtube-dl批处理脚本,打开文件浏览器选择下载文件夹路径
可弹出文件夹选择窗口的youtube-dl批处理修改方案
Windows原生批处理没有内置GUI选文件夹的能力,我们直接调用系统自带的PowerShell组件实现标准「浏览文件夹」弹窗,不需要安装任何第三方工具,修改后可直接使用。
修改后完整代码
@ECHO OFF chcp 65001 >nul setlocal ECHO ---------------------------------------------------------------------------------------------------- SET /P URL="[Enter video URL] " ECHO ---------------------------------------------------------------------------------------------------- goto formatList :formatList ECHO. ECHO ---------------------------------------------------------------------------------------------------- youtube-dl -F %URL% ECHO ---------------------------------------------------------------------------------------------------- goto selection :selection ECHO. ECHO ---------------------------------------------------------------------------------------------------- ECHO a) Video + Audio ECHO b) Single format (Audio only / Video only) ECHO. SET /P option="Select option: " :: 不区分大小写判断用户输入,输大写A/B也能正常识别 if /i "%option%" == "a" (goto download) if /i "%option%" == "b" (goto downloadSingle) ECHO. ECHO Unknown value ECHO ---------------------------------------------------------------------------------------------------- goto selection :: 新增的文件夹选择弹窗子程序 :SelectFolder for /f "delims=" %%p in ('powershell -noprofile -command "Add-Type -AssemblyName System.Windows.Forms; $dialog = New-Object System.Windows.Forms.FolderBrowserDialog; $dialog.Description = '请选择视频下载保存的目标文件夹'; $dialog.ShowNewFolderButton = $true; if ($dialog.ShowDialog() -eq 'OK') { Write-Output $dialog.SelectedPath }"') do set "location=%%p" :: 处理用户点取消的异常情况 if not defined location ( echo 错误:你未选择任何下载文件夹,脚本退出。 echo ---------------------------------------------------------------------------------------------------- pause exit ) echo 已选择下载路径:%location% goto :eof :download ECHO ---------------------------------------------------------------------------------------------------- ECHO. ECHO ---------------------------------------------------------------------------------------------------- SET /P video="Select video format: " SET /P audio="Select audio format: " :: 替换原手动输路径逻辑,调用文件夹选择弹窗 call :SelectFolder ECHO. :: 修正原脚本路径参数的转义错误,加引号适配带空格的路径 youtube-dl --write-sub --embed-subs -o "%location%/%%(title)s.%%(ext)s" -f %video%+%audio% -i --ignore-config --hls-prefer-native %URL% ECHO ---------------------------------------------------------------------------------------------------- ECHO. PAUSE EXIT :downloadSingle ECHO ---------------------------------------------------------------------------------------------------- ECHO. ECHO ---------------------------------------------------------------------------------------------------- SET /P format="Select format: " :: 补上原脚本缺失的单格式分支路径选择逻辑 call :SelectFolder ECHO. youtube-dl --write-sub --embed-subs -o "%location%/%%(title)s.%%(ext)s" -f %format% -i --ignore-config --hls-prefer-native %URL% ECHO ---------------------------------------------------------------------------------------------------- ECHO. PAUSE EXIT
关键修改说明
- 新增
:SelectFolder子程序:调用系统内置组件弹出标准文件夹选择窗口,支持用户直接在弹窗里新建文件夹,选中的路径会自动赋值给location变量,无需手动输入。 - 原脚本两个下载分支中手动输入路径的逻辑全部替换为弹窗选择,不需要再手动敲路径。
- 修正原脚本3个隐藏bug:
- 原脚本把批处理变量
%location%错误转义为%%location%%,会导致youtube-dl收到字面文本而非实际路径,现在已修正。 - 原脚本输出路径参数没有加双引号,如果路径带空格(比如
D:\我的视频)会导致参数解析错误,现在已加双引号兼容所有合法路径。 - 原脚本单格式下载分支完全缺失路径选择逻辑,现在已补上,两个分支都能正常弹窗选文件夹。
- 原脚本把批处理变量
- 优化体验细节:
- 开头新增
chcp 65001 >nul切换控制台编码,避免中文提示乱码。 - 选项判断改为不区分大小写,用户输大写A/B或者小写a/b都能正常识别。
- 新增取消操作的异常处理,用户点弹窗取消时会给出明确提示,不会带着空路径跑命令报错。
- 开头新增
内容的提问来源于stack exchange,提问作者Muhammad Firdaus Nata
相关产品推荐
相关产品推荐

