@ECHO OFF
SETLOCAL
:Get_ISOlanguage
set "ISOlanguage="
set /p ISOlanguage=Enter subtitle language in ISO 639-2 standard abbreviation:
if not defined ISOlanguage echo You must enter a value. Try again.&goto Get_ISOlanguage
:: First way
SET "validlanguages=eng,fr,ger"
FOR %%a IN (%validlanguages%) DO IF /i "%%a"=="%ISOlanguage%" GOTO valid1
ECHO way1 - invalid language "%ISOlanguage%"
GOTO way2
:valid1
ECHO way1 - Valid language "%ISOlanguage%"
:: Second way - languages in file 'q1036836.txt' - one to a line
:way2
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q1036836.txt"
ECHO %ISOlanguage%|FINDSTR /i /x /g:"%filename1%" >NUL
IF ERRORLEVEL 1 (
ECHO way2 - invalid language "%ISOlanguage%"
) ELSE (
ECHO way2 - Valid language "%ISOlanguage%"
)
:: Third way - languages in file 'q1036836.txt' - one to a line
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q1036836.txt"
FINDSTR /i /x /L /c:"%ISOlanguage%" "%filename1%" >NUL
IF ERRORLEVEL 1 (
ECHO way3 - invalid language "%ISOlanguage%"
) ELSE (
ECHO way3 - Valid language "%ISOlanguage%"
)
:: Fourth way - languages/destination in file 'q1036836_2.txt' - one to a line
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q1036836_2.txt"
FOR /f "usebackqtokens=1*delims=," %%a IN ("%filename1%"
) DO IF /i "%%a"=="%ISOlanguage%" SET "$goto=%%b"&GOTO valid4
ECHO way4 - invalid language "%ISOlanguage%"
GOTO :eof
:valid4
ECHO way4 - Valid language "%ISOlanguage%" - GOTO "%$goto%"
GOTO :EOF
Você precisaria alterar as configurações de sourcedir
e filename1
para se adequar às suas circunstâncias.
Eu usei um arquivo chamado q1036836.txt
contendo isso para o meu teste.
eng
fr
ger
O primeiro método simplesmente itera sobre cada item em uma lista e ao encontrar uma correspondência vai para o rótulo válido. Se a lista estiver esgotada, tente novamente.
O segundo método e o terceiro método exploram findstr
setting errorlevel
= 0 se houver uma correspondência encontrada e diferente de zero.
O terceiro método é simplesmente outra maneira de usar findstr
(e seria minha preferência).
O quarto método permite que diferentes destinos sejam especificados. Na entrada válida, uma linha goto %$goto%
pula para o marcador de destino apropriado.
Eu usei um arquivo chamado q1036836_2.txt
contendo isso para o meu teste.
eng,dest_for_eng
fr,destination_for_fr
ger,vere_to_go_for_ger
Com qualquer um desses métodos, usei a sintaxe completa. Sem dúvida, poderia ser abreviado, se necessário.