Пакет - Проверьте, содержит ли переменная символы, отличные от цифр, букв и дефисов
Я пишу сценарий, который устанавливает новое имя компьютера. синтаксис такой:
script.bat /NAME:<place new name here>
проблема в том, что я не уверен, как заставить мой скрипт проверять, что пользователь вводил только буквы, цифры и дефисы. так что, в основном, LENOVO-190
хорошо, но LENOVO:~19|0)
не является. Кроме того, я хотел бы изменить все строчные буквы на прописные, просто для эстетического эффекта (я думаю, что это выглядит лучше).
я только хочу, чтобы мой сценарий принял A
-Z
, 0
-9
, а также -
, и если введен неверный символ (скажем, #
), это скажет что-то вродеhey! # is not allowed!
"
спасибо всем, ура.
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!
Что касается того, как заменить строчные буквы прописными буквами в чистом пакетном виде, есть способы.