Windows CMD检查变量是否只有大写

时间:2012-10-04 15:37:23

标签: windows batch-file cmd

我有一个变量,我需要检查它是否只有captials。例如:

ABCDEF应匹配

但是ABcdef不应该

我该怎么做?

2 个答案:

答案 0 :(得分: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

答案 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
)