Любой способ сделать это без команды SET Count? / Улучшить код - PullRequest
0 голосов
/ 19 мая 2019

Это пакетный скрипт, который будет воспроизводить любую потоковую веб-ссылку в VLC
Требуется 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 голосов
/ 20 мая 2019

Конечно - это можно сделать. Вот способ (но он не простой и не красивый)

@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, поэтому трудно увидеть, какую цель имеет сохранение других строк в опубликованном вами фрагменте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...