@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
Вам необходимо изменить настройки sourcedir
и filename1
в соответствии с вашими обстоятельствами.
Я использовал файл с именем q1036836.txt
содержащий это для моего тестирования.
eng
fr
ger
Первый метод просто перебирает каждый элемент в списке и, находя совпадение, переходит к действительной метке. Если список исчерпан, попробуйте еще раз.
Второй метод и третий метод используют findstr
задавая errorlevel
= 0, если найдено совпадение и ненулевое значение в противном случае.
Третий метод - это просто еще один способ использования findstr
(и это было бы моим предпочтением).
Четвертый метод позволяет указывать разные пункты назначения. При правильном вводе строка goto %$goto%
будет переходить к соответствующей метке назначения.
Я использовал файл с именем q1036836_2.txt
содержащий это для моего тестирования.
eng,dest_for_eng
fr,destination_for_fr
ger,vere_to_go_for_ger
С любым из этих методов я использовал полный синтаксис. Без сомнения, это может быть сокращено, если требуется.