2010-04-14 3 views
8

1) 변수의 내용에 대문자 만 포함되어 있는지 알려주는 기본 제공이 있습니까?2 배치 문자열 질문

2) 변수에 문자열이 있는지 확인하는 방법이 있습니까? 예를 들어 % PATH % 변수에 Ruby가 포함되어 있는지 확인하고 싶습니다.

답변

15

1 부인 경우는 findstr입니다. 그 공백 출력되는 원인이되므로

> set xxokay=ABC 
> set xxbad=AB1C 
> echo %xxokay%|findstr /r "^[A-Z]*$" >nul: 
> echo %errorlevel% 
0 
> echo %xxbad%|findstr /r "^[A-Z]*$" >nul: 
> echo %errorlevel% 
1 

그것은 당신이 하지echo %xxokay% 및 파이프 문자 | 사이에 공간이 할이 경우 중요 : 당신은 errorlevel와 함께 정규식 기능을 사용할 수 있습니다 당신의 받아 들일 수있는 문자 중 하나가 아닙니다. 제 2 부


, findstr도 대답 (/i 당신이 원하는 것을 할 수있다 케이스를 무시입니다 - 경우가 일치해야하는 경우 오프두고) :

> set xxruby=somewhere;c:\ruby;somewhere_else 
> set xxnoruby=somewhere;somewhere_else 
> echo %xxruby%|findstr /i ruby >nul: 
> echo %errorlevel% 
0 
> echo %xxnoruby%|findstr /i ruby >nul: 
> echo %errorlevel% 
1 

을 그런 다음 사용할 수 있습니다

if %errorlevel%==1 goto :label 

두 경우 모두 스크립트의 동작을 변경하십시오. 이 배치 솔루션 (cmd.exe를) 아니라, 쉽게 다른 기본으로하는이 이미, VBScript를를 사용

:ruby_check 
    echo %yourvar%|findstr /i ruby >nul: 
    if %errorlevel%==1 goto :ruby_check_not_found 
:ruby_check_found 
    :: ruby was found 
    goto :ruby_check_end 
:ruby_check_not_found: 
    :: ruby was NOT found 
:ruby_check_end 
1

:

예를 들어, 루비 검사에 대한 코드 세그먼트는 뭔가를 할 수 시스템에 설치되어 있어야합니다.

Set objArgs = WScript.Arguments 
var=objArgs(0) 
check=var 
If check=UCase(var) Then 
    WScript.Echo "String contains all uppercase" 
Else 
    WScript.Echo "String doesn't contain all uppercase" 
End If 
' to check string contains substring 
mystring="This is my ruby string" 
check="ruby" 
If InStr(mystring,check)>0 Then 
    WScript.Echo "string contains ruby" 
End If 
myscript.vbs로 파일 저장

및 문자열 조작이

C:\test>cscript //nologo myscript.vbs abC 
String doesn't contain all uppercase 
string contains ruby 

C:\test>cscript //nologo myscript.vbs ABCD 
String contains all uppercase 
string contains ruby 

사용하여 배치 (cmd.exe를)처럼 실행 당신이 절대적으로 제한하지 않는 한,하고 싶은 것이 마지막이다. 그렇지 않으면 작업에 더 적합한 도구를 사용하십시오.