从传递给 Windows Bat 命令的参数中删除文本

从传递给 Windows Bat 命令的参数中删除文本

在 Windows 上我创建了ydl.bat接受 url 的文件。

youtube-dl.exe -f 140 %1

我想要做的是,?如果传递的 url 是这样的,则删除所有内容https://youtu.be/1j6muwUGXw?list=RDK2_g8u0bUc

我可以用 python 来做,但我相信如果我们在 windows 中务实地做的话步骤会更少

答案1

以下是关于如何实现这一目标的一个想法:

@echo off
setlocal EnableDelayedExpansion
Set url=%1
if "%url%"=="" set url=https://youtu.be/1j6muwUGXw?list=RDK2_g8u0bUc
echo Old Url: %url%
echo.

:GetLength
set /a Lenght+=1
if /i not "!url:~0,-%Lenght%!"=="" goto :GetLength

for /l %%a in (0,1,%Lenght%) do (
if /i "!url:~%%a,1!"=="?" set url=!url:~0,%%a! & goto :next
)
:next
echo New Url: %url%
echo.
pause
Exit

答案2

使用?作为分隔符并仅使用第一个标记的字符:

for /f delims^=?  %%i in ("%~1")do youtube-dl.exe -f 140 %%i

缩短链接的替代方案:
如何使用以下方法获取缩短 URL 背后的真实 URLcURL

@echo off 

for /f tokens^=2 %%i in ('%__APPDIR__%curl.exe -sLI "%~1"^|find "Location:"
')do for /f tokens^=1delims^=^& %%Y in ('echo\"%%~i"')do youtube-dl.exe -f 140 %%Y

相关内容