2017-11-21 6 views
0

새 컴퓨터 이름을 설정하는 스크립트를 작성하고 있습니다. 구문은 다음과 같습니다배치 - 변수에 숫자, 문자 및 하이픈 이외의 문자가 포함되어 있는지 확인하십시오.

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

문제 메신저, 내 스크립트는 사용자는 문자 번호와 하이픈을 입력하는지 확인하는 방법을 확실하지 않다. 기본적으로 LENOVO-190은 괜찮지 만 LENOVO:~19|0)은 그렇지 않습니다. 또한, id는 모든 소문자를 대문자로 변경하는 것처럼, 단지 미적인 영향을줍니다 (더 멋지게 보입니다). Z, 0 - - 9-

이 난 단지 내 스크립트가 A에 동의합니다. 유효하지 않은 문자가 입력되면 (예 : #) "hey! # is not allowed!"

등의 인사말을 들려줍니다.

+0

StackOverflow는 주문할 스크립트를 작성하지 않습니다. 당신의 임무는 스크립트를 만드는 것이고, 우리는 실행으로 인한 원치 않는 문제에 대한 도움을 제공합니다. – Compo

+0

첫 문장을주의 깊게 읽으십시오. – ditheredtransparency

+0

@ditheredtransparency, Compo는 기본적으로 기존 코드를 보도록 요청하고 있으며 어떤 코드 행에 문제가 있는지 묻습니다. – Squashman

답변

1

Windows의 최신 버전은 findstr입니다. grep과 같으며 정규 표현식의 일치 항목을 찾을 수 있습니다. 그것을 사용하여 입력 이름이 예상과 일치하는지 여부를 확인할 수 있습니다. 예를 들면 : there are ways, 순수 batchese에 대문자와 소문자를 교체하는 방법에 관해서는

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! 

.

+0

'/ I' 스위치를 사용하고 있으므로 각 클래스 내에서 알파벳 범위를 두 번 나열 할 필요가 없습니다. – Squashman

+0

@Sqashman : 고맙습니다. 편집 됨. – AlexP

+0

'grep'의 쿨하고 큰 팬. Windows에서 비슷한 것을 사용할 수있어서 기쁘다. 고마워요! @ 스쿼시맨, 나도 당신이 저의 포스트를 upvoted, 그것은 또한 일했다. :-) – ditheredtransparency