没有SET Count命令可以执行此操作吗? /改善代码

时间:2019-05-19 16:23:28

标签: windows batch-file

这是一个批处理脚本,将在VLC中播放任何流式Web链接
需要Youtube-dl,PhantomJS和VLC

它真的需要SET count命令吗,似乎有点冗长。
有更简单的方法吗?

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

set /p var1="Url? "

SET count=1
FOR /F "tokens=* USEBACKQ" %%F IN (`youtube-dl -g %var1%`) DO (
  SET var!count!=%%F
  SET /a count=!count!+1
)

echo %var1%
vlc %var1%
ENDLOCAL
pause

1 个答案:

答案 0 :(得分:0)

当然-可以做到。这是一种方法(但这并不简单或漂亮)

@echo off
SETLOCAL 
set /p var1="Url? "

for /L %%z in (100,1,999) do set "var%%z"
FOR /F "tokens=* USEBACKQ" %%F IN (`youtube-dl -g %var1%`) DO (
  set "new=Y""
  for /L %%z in (100,1,999) do if defined new if not defined var%%z set "new="&set "var%%z=%%F"
)

set var

echo %var1%
vlc %var1%
pause

注意:数据现在保存在var100 +中,并通过set var命令报告。

您的原始条目已被代码覆盖,由我保存在var1中。

不再需要ENABLEDELAYEDEXPANSION。

ENDLOCAL会处理在setlocal命令之后所做的变量更改,因此很难看到保存其他行在已发布的代码段中的用途。