Пакет - Проверьте, содержит ли переменная символы, отличные от цифр, букв и дефисов

Я пишу сценарий, который устанавливает новое имя компьютера. синтаксис такой:

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!

Что касается того, как заменить строчные буквы прописными буквами в чистом пакетном виде, есть способы.

Другие вопросы по тегам