배치 파일에서 문자열 목록에 for 및 if 명령 사용


0

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
이전 질문에 대한 답으로 시작해야합니다 ( for올바른 항목을 확인 하기 위해 올바르게 사용하는 방법을 보여줍니다 ). nameList실제 이름을 출력하려면 언어 이름 이 포함 된 별도의 목록 ( )이 있어야합니다.
DavidPostill

답변:


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

@Arete는 완전히 재 작업했습니다.
Stephan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.