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

时间:2017-11-21 18:32:16

标签: batch-file computer-name

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

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

问题是,我不知道如何让我的脚本验证用户只输入字母数字和连字符。所以,基本上,LENOVO-190是可以的,但LENOVO:~19|0)不是。此外,id喜欢它将所有小写字母更改为大写字母,仅用于aestetic效果(我觉得它看起来更好)。

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

谢谢大家,欢呼。

1 个答案:

答案 0 :(得分:1)

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