『楼 主』:
[求助]前些天写的输入验证,写得有些啰嗦,请大家修改
@echo off
setlocal enabledelayedexpansion
set values=ASCII,Big5,Big5-HKSCS,Cp037:-1,Cp273,Cp277,Cp278,Cp280,Cp284,Cp285,Cp297,Cp420,Cp424,Cp437,Cp500,Cp737,Cp775,Cp838,Cp850,Cp852,Cp855,Cp856,Cp857,Cp858,Cp860,Cp861,Cp862,Cp863,Cp864,Cp865,Cp866,Cp868,Cp869,Cp870,Cp871,Cp874,Cp875,Cp918,Cp921,Cp922,Cp930,Cp933,Cp935,Cp937,Cp939,Cp942,Cp942C,Cp943,Cp943C,Cp948,Cp949,Cp949C,Cp950,Cp964,Cp970,Cp1006,Cp1025,Cp1026,Cp1046,Cp1097,Cp1098,Cp1112,Cp1122,Cp1123,Cp1124,Cp1140,Cp1141,Cp1142,Cp1143,Cp1144,Cp1145,Cp1146,Cp1147,Cp1148,Cp1149,Cp1250,Cp1251,Cp1252,Cp1253,Cp1254,Cp1255,Cp1256,Cp1257,Cp1258,Cp1381,Cp1383,Cp33722,EUC-JP,EUC_JP_LINUX,EUC-KR,EUC_CN,EUC_TW,GB18030 ,GBK,ISCII91 ,ISO-2022-JP,ISO-2022-KR,ISO-8859-1,ISO2022CN,ISO2022CN_CNS,ISO2022CN_GB,ISO2022JP,ISO2022KR,ISO8859_1,ISO8859-2,ISO8859-3,ISO8859-4,ISO8859-5,ISO8859-6,ISO8859-7,ISO8859-8,ISO8859-9,ISO8859-13,ISO8859-15,JIS0201,JIS0208,JIS0212,JISAutoDetect,Johab,MacArabic,MacCentralEurope,MacCroatian,MacCyrillic,MacDingbat,MacGreek,MacHebrew,MacIceland,MacRoman,MacRomania,MacSymbol,MacThai,MacTurkish,MacUkraine,MS874,MS932,MS936,MS949,MS950,MS950_HKSCS,Shift_JIS,SJIS,TIS-620,TIS620,UnicodeBigUnmarked,UnicodeLittleUnmarked,US-ASCII,UTF-16,UTF-16BE,UTF-16LE,UTF-8,UTF8,windows-1250,windows-1251,windows-1252,windows-1253,windows-1254,windows-1255,windows-1256,windows-1257,windows-1258,windows-31j,x-EUC-CN,x-EUC-JP-LINUX,x-EUC-TW,x-MS950-HKSCS,x-mswin-936,x-windows-949:0,x-windows-950
:loop
set input=
set /p input=Input:
call :validate status indeces input values /n /i /x
echo !status!
echo !indeces!
goto :loop
:validate _envState _envIndex _envInput _envValues /n(/nn):Nullable /i(/ni):Ignore case /x(/nx):type eXit to quit
set ^%1=invalid
set ^%2=0
if not defined %3 (if "%5"=="/n" (set ^%1=valid)) & goto :EOF
if !%3!==exit (if "%7"=="/x" exit)
if "%6"=="/i" (set ignorecase_validate=/i) else (set ignorecase_validate= )
set values_validate=!%4:,=^
!
for /f "delims=: tokens=1,2" %%i in ("!values_validate!") do (
if !%1!==valid goto :EOF
if not "%%j"=="" (set ^%2=%%j) else set /a ^%2=!%2!+1
if %ignorecase_validate% "!%3!"=="%%i" set ^%1=valid
)
goto :EOF [ Last edited by obsolete on 2008-7-24 at 11:58 PM ]
|