我有一个变量,我需要检查它是否只有大写字母。例如:
ABCDEF 应该匹配
但是 ABcdef 不应该
我该怎么做?
使用 findstr 和 errorlevel。请参见下面的示例。请注意,您可能希望作为模式工作,但这里"^[A-Z]*$"
没有提到。
%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
lessthanideal 有一个解决方案,可以严格验证字符串是否只包含大写字母。但我想知道是否应该允许标点符号和/或数字?如果是这样,那么最好检查是否存在小写字母。
此外,您不需要查看 FINDSTR 命令的输出,因此可以将其重定向为 NUL。并且您可以使用&&
and||
运算符来检测成功和失败。
我正在使用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
)