2012-07-22 3 views
2

그 시작은 VBS에 좋지 않지만 배우려고합니다. 지금은 텍스트 파일로 대체하는 데 어려움이 있습니다.VBS 바꾸기 및 쓰기

내가 원하는 것은 텍스트 "VGML"을 검색하는 것입니다. "STML"이있는 경우 동일한 행을 확인하십시오.이 경우 ""로 바꿔야합니다. 파일. 마지막으로 "STML"없이 "VGML"이 발견되면 "VGML"을 제거해야합니다.

에코를 사용할 때 코드가 내가 원하는 것을 수행하는 것을 볼 수 있지만, 파일에 쓰는 것은 대부분 코드가 모든 것을 제거한 빈 파일을 가져옵니다.

아무도 올바른 방향으로 나를 넣을 수 있습니까? 당신의 도움에 대한

Const ForReading = 1 
Const ForWriting = 2 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("C:\Script\RemoveSTML\testFiles\test.txt", ForReading) 

strEMTY = " " 
strSTML = "STML" 
strVGML = "VGML" 

Do Until objFile.AtEndOfStream 
    strLine = objFile.ReadLine 
    If InStr(strLine,strVGML)>0 Then 
     If Instr(strLine,strSTML)>0 Then 
     strLine = Replace(strLine, strSTML, strEMTY) 
     wscript.Echo strLine 
     Else 
     strLine = Replace(strLine, strVGML, strEMTY) 
     wscript.Echo strLine 
     End If 
    End If            
Loop 
objFile.Close 
Set objFile = objFSO.OpenTextFile("C:\Script\RemoveSTML\testFiles\test.txt", ForWriting) 
objFile.Write strLine 
objFile.Close 
Wscript.Echo "done" 

감사 : 여기

코드입니다! 올바른 방향으로 걷어차주세요!

+2

방금 ​​시작한 이래로 팁을 알려 드리겠습니다. 항상 ['Option Explicit'] (http://msdn.microsoft.com/en-us/library/bw9t3484%28v=vs.84)로 스크립트를 시작하십시오. % 29)'Dim '을 사용하여 명시 적으로 변수를 선언하는 습관을 갖습니다. 이것은 거의 확실하게 미래의 문제에서 당신을 구할 것입니다. –

답변

1

루프에서 파일의 각 줄을 읽고 변수 strLine에 씁니다.
그런 다음 "SMTL"/ "VGML"을 바꿉니다. 그러나 그 후에는 strLine의 내용으로 아무것도하지 않고 다음 루프의 소스 ​​파일에서 다음 줄로 바꾸십시오.

마지막에 한 번만 파일에 strLine을 쓰지만 그 순간에는 strLine에 소스 파일의 마지막 줄만 포함됩니다.

해결 방법 : 당신은 대상 파일에 쓸 수 있습니다 내부 Do...Loop (하지만 VBScript를 잘 모르는, 그래서이 작업을 수행하는 방법을/나도 몰라) 또는 두 번째 문자열 변수를 사용할 수 있습니다 당신은 루프 내부에 있지만, 이런 식으로 ... 교체 한 후 strLine를 추가 여기서 끝에서

strFinal = strFinal & strLine 

, 파일,하지 strLinestrFinal 물품.

+0

이것은 내가 올바른 방향으로 더 많은 것을 보여 주었고 적어도 같은 페이지에 달라 붙지는 않았다. 나는 아직 원하는대로 작동하지 않았다. 하지만 곧 내가 원하는만큼 빨리 달릴 수 있습니다. 이 도움에 감사드립니다! –

+0

귀하의 의견은 지금이 문제를 해결하는 데 도움이되었음을 알려드립니다. 방금 strFinal = strFinal & strLine & vbCr & vbLf'을 추가해야했습니다. 이제 완벽하게 흐르고, 주말과 하룻 밤을 보냈습니다. 도와 주셔서 다시 한 번 감사드립니다! 이것을 해결 된 것으로보십시오. –

+0

죄송합니다, 제 실수입니다. 제가 이것을 썼을 때 줄 바꿈을 잊어 버렸습니다. 나는 이것이 VBScript에도 존재하는지 모르지만 VBA (나는 많이 사용함)에서'vbCr & vbLf' 대신'vbCrLf'를 사용할 수도 있습니다. –