批处理文件 HH:MM:SS 转换为秒 Youtube-DL get-duration

Batch file HH:MM:SS convert to seconds Youtube-DL get-duration

所以我正在使用 Youtube-DL,我做了以下方法来获取视频的持续时间输出,但我遇到的问题是返回的时间以小时、分钟和秒为单位,而我只需要它是秒。

SET root_path=%~dp0

For /f "delims=" %%x in ('
%root_path%youtube-dl.exe --get-duration "https://youtu.be/hRgcgcTP7nM"
') do set "data=!data!%%x"
echo Video Length is %data%
echo In seconds %data:~-5%

echo Raw output is Hours:Minutes:Seconds 
set data=1:10:00

IF /I 300 GTR %data% echo 300 seconds is more than %data%
pause

300 秒是 5 分钟,视频比那个短,但我无法让我的命令行读取时分秒格式进行比较

我自己想出了如何转换时间 Hours:Minutes:Seconds。

我创建了这个解决方案,希望其他人使用我的代码并发现它有用。

SET STRING=08:09:01
set count=0
for %%a in (%STRING::= %) do set /a count+=1
set loopvar=1
:repeat
for /f "tokens=%loopvar% delims=:" %%a in ("%STRING%") do (
if /I %count%==4 (
if /I %loopvar%==1 (set days_output=%%a && echo Count we are on Days %%a)
if /I %loopvar%==2 (set hours_output=%%a && echo Count we are on Hours %%a)
if /I %loopvar%==3 (set mins_output=%%a && echo Count we are on Mins %%a)
if /I %loopvar%==4 (set secs_output=%%a && echo Count we are on Seconds %%a)
)
if /I %count%==3 (
if /I %loopvar%==1 (set hours_output=%%a && echo Count we are on Hours %%a)
if /I %loopvar%==2 (set mins_output=%%a && echo Count we are on Mins %%a)
if /I %loopvar%==3 (set secs_output=%%a && echo Count we are on Seconds %%a)
)
if /I %count%==2 (
if /I %loopvar%==1 (set mins_output=%%a && echo Count we are on Mins %%a)
if /I %loopvar%==2 (set secs_output=%%a && echo Count we are on Seconds %%a)
)
if /I %count%==1 (
if /I %loopvar%==1 (set secs_output=%%a && echo Count we are on Seconds %%a)
)
)
if %loopvar% gtr %count% (goto :done) else (set /a loopvar=%loopvar%+1 && goto :repeat)
:done

if defined days_output (goto :days_defined) else (goto :days_undefined)
:days_defined
if [%days_output:~0,1%]==[0] (
set days_output=%days_output:~1,1% * 86400
) else (set days_output=%days_output% * 86400)
:days_undefined

if defined hours_output (goto :hours_defined) else (goto :hours_undefined)
:hours_defined
if [%hours_output:~0,1%]==[0] (
set hours_output=%hours_output:~1,1% * 3600
) else (set hours_output=%hours_output% * 3600)
:hours_undefined

if defined mins_output (goto :mins_defined) else (goto :mins_undefined)
:mins_defined
if [%mins_output:~0,1%]==[0] (
set mins_output=%mins_output:~1,1% * 60
) else (set mins_output=%mins_output% * 60)
:mins_undefined

if defined secs_output (goto :secs_defined) else (goto :secs_undefined)
:secs_defined
if [%secs_output:~0,1%]==[0] (
set secs_output=%secs_output:~1,1%
)
:secs_undefined

SET /A time_secs=!days_output!+!hours_output!+!mins_output!+!secs_output!
echo Seconds !time_secs!

pause