2013-04-18 2 views
0

네트워크상의 모든 장치에서 XML 문서로 모든 시스템 정보를 수집하는 유틸리티를 작성 중이며 값 중 하나는 특정 소프트웨어 버전 번호입니다. 불행하게도 버전 번호는 각 컴퓨터 (c : \ master.txt)의 단일 텍스트 파일에만 저장됩니다. 더 재미있는 부분은 각 텍스트 파일이 사용 된 이미지에 따라 다르게 형식이 지정됩니다.파일에서 텍스트 문자열을 추출하십시오.

하나는 말할 수

Product Number: 11dsSt2 BRANDONII,STNS6.0.2.200 

다음

Ver: 22335TS BOX2 S6.1.3.011,STN 

등등. 내가 무슨 짓을

그러나 난 그냥 출력 패턴이 아닌 전체 라인에 원하는,

[A-Z]#.#.#.### 

이 작동되는 버전의 패턴과 일치하는 번호 패턴을 찾는 VBS를 만드는 것입니다. 여기 내 코드가있다. 어떤 제안?

Const ForReading = 1 
Set objRegEx = CreateObject("VBScript.RegExp") 
objRegEx.Pattern = "[A-Z]{1}[0-9]{1}.[0-9]{1}.[0-9]{1}.[0-9]{3}" 
objregex.global = true 
objregex.ignorecase = true 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("C:\master.txt", ForReading) 
Do Until objFile.AtEndOfStream 
strSearchString = objFile.ReadLine 
set colMatches = objRegEx.Execute(strSearchString) 
If colMatches.Count > 0 Then 
Addmatch 
End If 

Loop 
objFile.Close 
Sub Addmatch 'Creates a text file with the part number 
Const ForAppending = 8 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
set objFile1 = objFSO.OpenTextFile("C:\test.txt", ForAppending, True) 
objFile1.Writeline strSearchString 
objFile1.Close 

end sub 

답변

1

당신은 당신이 (당신이 strSearchString에 가지고) 대신 일치하는 텍스트 파일에서 읽은 줄 전체를 저장하고 있습니다.

if ColMatches.Count > 0 then 
    AddMatch(ColMatches(0))  ' Just grab the matched text and pass to AddMatch 
End If 

Sub AddMatch(strMatchedText) ' Change to accept parameter of text to write out 
    ' Other code 
    objFile1.Writeline strMatchedText 
    objFile1.Close 
End Sub 
+0

Sub Addmatch(sWhatToWriteLn) ' some truthful comment Const ForAppending = 8 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile1 = objFSO.OpenTextFile("C:\test.txt", ForAppending, True) objFile1.Writeline sWhatToWriteLn 

.... 시간 내 주셔서 대단히 감사합니다 – bill

1

첫 번째/하나를 사용하여 만 값을 얻을 일치하고 Addmatch의 약간 수정 된 버전이 통과 : (! 안된)이 대신 같은 것을 사용

If colMatches.Count > 0 Then 
    Addmatch colMatches(0).Value 
End If 

을 .. .이 완벽하게 작동

관련 문제