Usando para e se comandos para uma lista de seqüências de caracteres em um arquivo em lotes

0

Estou fazendo um arquivo em lotes para o Windows. Acabei de começar a aprender scripts em lote e tenho alguns problemas aqui.

@echo off
set langList=("eng","fre","chi")

:Get_ISOlanguage
set "ISOlanguage="
set /p ISOlanguage=Enter subtitle language in ISO 639-2 standard abbreviation:
set ISOlanguage="%ISOlanguage%"

for %%x in %langList% do (
if ""%ISOlanguage%"" == ""%%x"" (echo LANGUAGE SUPPORTED
goto :CONTINUE))
echo LANGUAGE NOT SUPPORTED 
goto :GET_ISOlanguage

:CONTINUE
echo ayy lmao

pause

Em vez de

for %%x in %langList% do (if ""%ISOlanguage%"" == ""%%x"" (echo LANGUAGE SUPPORTED&goto :CONTINUE))

Se o usuário digitar, por exemplo, eng , como posso obter, por exemplo, Your chosen language is English e continuar o lote? Se o usuário inserir algo que não esteja na langList, quero exibir uma mensagem de erro dizendo "entrada incorreta, por favor, tente novamente".

    
por Arete 08.02.2016 / 15:47

1 resposta

2

Eu achei que li em algum lugar que você deseja manter a lista dentro de seu arquivo batch em vez de um arquivo de dados. A solução mais óbvia para isso seria definir muitas variáveis, mas prefiro outro método:

@echo off
:Get_ISOlanguage
set "language=not supported"
set /p "ISOlanguage=Enter language code: "
for /f "tokens=3 delims=," %%i in ('find "DATA,%ISOlanguage%," "%~f0"') do set language=%%i
echo language is %language%
if "%language%"=="not supported" goto :Get_ISOlanguage


goto :eof
DATA,eng,English
DATA,fre,French
DATA,chi,Chinese
DATA,ger,German
DATA,deu,German
DATA,chn,Chinook jargon
    
por 08.02.2016 / 18:43