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

Batch file 批处理-检查变量是否包含数字、字母和连字符以外的字符,batch-file,computer-name,Batch File,Computer Name,我正在写一个脚本来设置一个新的计算机名。语法是: script.bat /NAME:<place new name here> script.bat/名称: 问题是,我不知道如何让我的脚本来验证用户只输入字母、数字和连字符。因此,基本上,LENOVO-190可以,但LENOVO:~19 | 0)不行。另外,我希望它能将所有小写字母改为大写,只是为了让人感觉到美的效果(我觉得它看起来更好) 我只希望我的脚本接受A-Z,0-9和-。如果输入了无效字符(比如),它会说类似“嘿!#不允许

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

script.bat /NAME:<place new name here>
script.bat/名称:
问题是,我不知道如何让我的脚本来验证用户只输入字母、数字和连字符。因此,基本上,
LENOVO-190
可以,但
LENOVO:~19 | 0)
不行。另外,我希望它能将所有小写字母改为大写,只是为了让人感觉到美的效果(我觉得它看起来更好)

我只希望我的脚本接受
A
-
Z
0
-
9
-
。如果输入了无效字符(比如
),它会说类似“
嘿!#不允许”


谢谢大家,干杯。

现代版本的Windows有点像
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!

至于如何在纯batchese中用大写字母替换小写字母,StackOverflow不会按顺序编写脚本。您的任务是创建一个脚本,我们的任务是帮助解决由于脚本运行而产生的不希望出现的问题。请仔细阅读第一句话。@DitteredTransparency,Compo基本上是要求查看您现有的代码以及您遇到问题的代码行。@DitteredTransparency,我相信这就是你要找的。你正在使用
/I
开关,因此你不需要在每个类中列出两次字母范围。grep的超级粉丝。很高兴能在Windows下使用类似的东西。谢谢大家@Squashman,我还更新了你链接到我的那篇文章,因为它也起了作用。:-)@犹豫不决的是,我实际上是想把你和罗乔在这个问题上的答案联系起来,这个答案和亚历克斯在这里发布的答案类似。Rojo的答案会找到任何不是字母数字或连字符的字符,并告诉您它是无效的。Alex的正好相反,但条件逻辑是相反的,所以它们都工作相同。任何一种findstr方法都应该坚如磐石。