Я делаю командный файл для Windows. Я только начал изучать пакетные сценарии, и у меня есть некоторые проблемы здесь.

@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

Вместо

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

Если пользователь печатает, например, eng как я могу получить, например, Your chosen language is English а затем продолжить пакет? Если пользователь вводит что-то, чего нет в langList, я хочу отобразить сообщение об ошибке «неправильный ввод, пожалуйста, попробуйте еще раз».

1 ответ1

2

Я думал, что где-то прочитал, что вы хотите сохранить список внутри вашего пакетного файла вместо файла данных. Наиболее очевидным решением для этого было бы определить множество переменных, но я предпочитаю другой метод:

@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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .