批处理 - 检查变量是否包含数字、字母和连字符以外的字符

Batch - Check if variable contains characters other than numbers, letters and hyphens

我正在编写一个设置新计算机名称的脚本。语法是:

script.bat /NAME:<place new name here>

问题是,我不确定如何让我的脚本验证用户只输入了字母数字和连字符。所以,基本上,LENOVO-190 可以,但 LENOVO:~19|0) 不行。另外,我喜欢把所有小写字母都改成大写字母,只是为了美观(我觉得这样更好看)。

我只希望我的脚本接受 A-Z0-9-。如果输入了无效字符(比如 #),它会说类似“hey! # is not allowed!

谢谢大家,干杯

Windows 的现代版本有 findstr,它有点像 grep,因为它可以查找正则表达式的匹配项。您可以使用它来检查输入的名称是否符合您的期望。例如:

C> echo abcde| findstr /r /i ^^[a-z][a-z0-9-]*$ && echo Good name! || echo Only letters, digits and hyphens, please!
abcde
Good name!

C> echo ab#de| findstr /r /i ^^[a-z][a-z0-9-]*$ && echo Good name! || echo Only letters, digits and hyphens, please!
Only letters, digits and hyphens, please!

关于如何在纯批处理中将小写字母替换为大写字母,there are ways