Sử dụng các lệnh for và if cho danh sách các chuỗi trong tệp bó


0

Tôi đang làm một tập tin hàng loạt cho các cửa sổ. Tôi mới bắt đầu học tập kịch bản hàng loạt và tôi có một số vấn đề ở đây.

@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

Thay vì

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

Nếu loại người dùng, ví dụ như englàm thế nào tôi có thể lấy ví dụ Your chosen language is Englishvà sau đó tiếp tục lô? Nếu người dùng nhập một cái gì đó không có trong langList, tôi muốn hiển thị thông báo lỗi có nội dung "nhập sai, vui lòng thử lại".


1
Bạn cần bắt đầu với câu trả lời cho câu hỏi trước đó của bạn (trong đó chỉ cho bạn cách sử dụng đúng cách sử dụng forđể kiểm tra mục nhập hợp lệ). Và có một danh sách riêng ( nameList) với các tên ngôn ngữ trong đó để xuất tên thật.
DavidPostill

Câu trả lời:


2

Tôi nghĩ rằng tôi đã đọc ở đâu đó bạn muốn giữ danh sách bên trong tệp dữ liệu thay vì tệp dữ liệu. Giải pháp rõ ràng nhất cho điều này sẽ là xác định rất nhiều biến, nhưng tôi thích phương pháp khác:

@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

@Aittle đã làm lại hoàn thành.
Stephan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.