2011-12-17 3 views
1

ssh를 통해 명령을 실행하고 반환 된 명령의 첫 번째 부분 만 가져 와서 사용할 변수로 설정하려고합니다. RegExp를 사용하려하고 처음 4 자리 만 필요하기 때문에 "^ \ d {1,4}"패턴 코드를 사용합니다.이 코드를 통해 전체 반환 값을 얻을 수 있습니다.RegEx를 사용하여 명령 줄의 일부를 반환하는 VBS

Set WshShell = CreateObject("WScript.Shell") 
Set oExec = WshShell.Exec ("ssh -un -pw command") 
     Do Until oExec.StdOut.AtEndOfStream 
     ID = oExec.StdOut.ReadLine 
     Loop 
     WScript.Echo ID 

하지만 지금은 정규식을 사용하려고하고 나는 사람이 어떤 문제가 있는지에 자극이있는 경우 나는 "형식 불일치"오류

Set RegExp = New RegExp 
Set WshShell = CreateObject("WScript.Shell") 
Set oExec = WshShell.Exec ("ssh -un -pw command") 
RegExp.Pattern = "^\d{1,4}" 
     Do Until oExec.StdOut.AtEndOfStream 
     ID = oExec.StdOut.ReadLine 
      WScript.Echo RegExp.execute(ID) 
     Loop 

을 얻을 원하는 것을 얻고 있는지 확인하기 위해 에코 경우 코드를 알려주세요. 당신이 어떤 대안을 안다면 나는 그것을 고맙게 생각할 것입니다. 쉘 스크립트를 사용하면 내가 찾고있는 것을 얻을 수 있지만이 VBS를 윈도우와 함께 실행해야합니다. 다른 사람이 VBS로 번역 할 수 있다면 쉘 스크립트가 있습니다.

.............for i in `command | sed ‘1d’ | awk ‘{print $1}’`.............. 

미리 도움을 청합니다. 잠시 동안 내 머리를 긁어 내고 불에 타게되었습니다.

답변

0

당신은 .Execute에서 얻은 일치 컬렉션과 같은 개체를 에코 할 수 없습니다. 그것의 첫번째 품목의 .Value에 접근하십시오 :

>> sInp = "1234xxx" 
>> Set reHead = New RegExp 
>> reHead.Pattern = "^\d{4}" 
>> Set oMTS = reHead.Execute(sInp) 
>> WScript.Echo oMTS(0).Value 
>> 
1234 
>> WScript.Echo oMTS 
>> 
Error Number:  13 
Error Description: Type mismatch 
+0

그것을 설명하는 Oooooooooooooooooh ... 저것은 정확하게 나가 Ekkeheard를 필요로 한 무슨이다 !!! 이제 숫자의 첫 번째 그룹을 파싱하고 .Value를 변수로 설정할 수 있습니다 ... 감사합니다 !!!! – who

관련 문제