A linha que está falhando é a IF %quality% == 1
.
Enquanto o arquivo em lote só executa logicamente o If
aninhado em uma ramificação, a instrução If
inteira é processada como um comando e, portanto, o comando inteiro deve ser válido em todas as ramificações. Sua declaração If (como um todo) não é válida no momento do processamento.
Se você ativar o Echo, verá a linha falhar como
( was unexpected at this time.
C:\Temp> IF == 1 (
Observe a parte que falhou: IF == 1 (
.
Isso é inválido porque não há lado esquerdo para a comparação. Não há lado esquerdo da comparação porque o set
para atribuir um valor à variável quality
não foi executado antes do processamento do If (já que está aninhado dentro do If).
Uma correção:
Coloque os dois lados de todas as comparações entre aspas, para que um valor vazio seja ""
em vez de apenas um espaço.
Por exemplo:
IF "%id%" == "1" (
set link=twitch.tv/stream1 source
) ELSE IF "%id%" == "2" (
set link=twitch.tv/stream1 high
) ELSE IF "%id%" == "3" (
set link=twitch.tv/stream1 medium
) ELSE IF "%id%" == "4" (
set link=twitch.tv/stream1 low
) ELSE IF "%id%" == "5" (
set link=twitch.tv/stream2 source
) ELSE IF "%id%" == "6" (
set link=twitch.tv/stream2 high
) ELSE IF "%id%" == "7" (
set link=twitch.tv/stream2 medium
) ELSE IF "%id%" == "8" (
set link=twitch.tv/stream1 high
) ELSE (...
Outra correção:
Mova o If aninhado em sua própria seção rotulada e use as instruções Goto
para direcionar o fluxo.
@echo off
echo 1 = stream1 source
echo 2 = stream1 high
echo 3 = stream1 medium
echo 4 = stream1 low
echo 5 = stream2 source
echo 6 = stream2 high
echo 7 = stream2 medium
echo 8 = stream2 low
set /p id="Enter ID: "
IF %id% == 1 (
set link=twitch.tv/stream1 source
) ELSE IF %id% == 2 (
set link=twitch.tv/stream1 high
) ELSE IF %id% == 3 (
set link=twitch.tv/stream1 medium
) ELSE IF %id% == 4 (
set link=twitch.tv/stream1 low
) ELSE IF %id% == 5 (
set link=twitch.tv/stream2 source
) ELSE IF %id% == 6 (
set link=twitch.tv/stream2 high
) ELSE IF %id% == 7 (
set link=twitch.tv/stream2 medium
) ELSE IF %id% == 8 (
set link=twitch.tv/stream1 high
) ELSE (
goto ChooseQuality
)
goto StartProgram
:ChooseQuality
echo ..............
echo 1 = source
echo 2 = high
echo 3 = medium
echo 4 = low
set /p quality="Enter ID: "
IF %quality% == 1 (
set hq="source"
) ELSE IF %quality% == 2 (
set hq="high"
) ELSE IF %quality% == 3 (
set hq="medium"
) ELSE IF %quality% == 4 (
set hq="low"
) ELSE (
set hq="source"
)
set link=twitch.tv/%id% %hq%
goto StartProgram
:StartProgram
Start C:\livestreamer\livestreamer.exe %link%
echo %link%
pause