2012-10-04 58 views

回答

2

使用findstr和errorlevel。看下面的例子。請注意,您可能期望"^[A-Z]*$"按照模式工作,但它不如here所述。

另請注意,%X%|之間沒有空格,這很重要。

C:\>SET X=ABCDEF 
C:\>SET Y=ABcdef 
C:\>echo %X%| findstr "^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*$" 
ABCDEF 

C:\>echo %errorlevel% 
0 

C:\>echo %Y%| findstr "^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*$" 

C:\>echo %errorlevel% 
1 
2

lessthanideal有一個解決方案,將嚴格驗證該字符串只包含大寫字母。但我不知道是否應該允許標點符號和/或數字?如果是這樣,那麼最好檢查是否存在小寫字母。

此外,您不需要看到FINDSTR命令的輸出,因此可以將其重定向到NUL。您可以使用&&||運營商來檢測成功和失敗。

我正在使用echo(,因此如果變量未定義而不是ECHO is on.,則會回顯空白行。大多數人使用echo.,但在某些情況下該表格可能會失敗,並且echo(永遠不會失敗。

@echo off 
setlocal 
set x=ABC_123 
set y=AbC_123 
echo(%x%|findstr /v "[abcdefghijklmnopqrstuvwxyz]" >nul && (
    echo %x% is Valid 
) || (
    echo %x% is Invalid 
) 
echo(%y%|findstr /v "[abcdefghijklmnopqrstuvwxyz]" >nul && (
    echo %y% is Valid 
) || (
    echo %y% is Invalid 
)