2017-12-27 37 views
0

私はスクリプトを書いていますが、txtファイルを読み込んでその行を見つけて置き換える方法を知りたかったのです。例えばVBScriptで動的に行を更新するには?

、私は次のようになり、その中にいくつかのパラメータ線を有しImportParms.txtと呼ばれるtxtファイルがある場合:

 
cmdFile=E:\Jobs\UPCS\Parms\ImportParms.upcs_cmd 
Process=StandardImport 
LogFile=e:\JOBS\UPCS\Logs\ImportLog.txt 
File=E:\jobs\UPCS\TestImportFile.txt 
ImportRejects=No 
RenameToOld=No 
RenameDateStamp=No 
ResultsReport="Public Reports\ImportResult" 
LinkExisting=Custom1 

私はFile=something.txtそれが実行されるたびに言うの行を更新したいが。だから代わりに

sCmd = sBotCmd & " file=""" & sUtilOut &""" " 

を有しているとそれだけでこのようになりますexeファイルを実行している私のコードの一部から

sCmd = sBotCmd 

を言うだろう:

'Run processbot to update 
Set oFile = oFSO.GetFile(sUtilOut) 
If oFile.Size <> 0 Then 
    strFile = sWORK & "\parms\" & BOTPARMFILE 
    Set objFile = objFS.OpenTextFile(strFile) 
    Do Until objFile.AtEndOfStream 
     strLine = objFile.ReadLine 
     'If first for characters = "file" 
      'delete this line 
      strFile.Write "file=" & sUtilOut 
     'End If 
    Loop 
    objFile.Close 

    sBotCmd = """"& sWORK & "\" & BOTPROG & """ " _ 
       & " cmdFile=""" & sWORK & "\parms\" & BOTPARMFILE & """ " 

    sCmd = sBotCmd 
    Call OutMsg(isVerbose, isVerbose, sSysLog, "Command: " & sCmd) 
    iRetC = oShell.Run(sCmd, 0, True) 
    Call OutMsg(isVerbose, isVerbose, sSysLog, "RC: " & iRetC) 
    If iRetC <> 0 Then 
     Call OutMsg(isVerbose, isVerbose, sSysLog, "Exiting with code " _ 
      & rcPROCBOT) 
     WScript.Quit(rcPROCBOT) 
    End If 
End If 

答えて

1

あなたが変更することはできません。ファイルをインプレースにします。あなたのファイルはちょうどその内容全体を読み込んだだけなので、あなたの変更を行い、それを書き戻します。

これを置き換えます。これで

Set objFile = objFS.OpenTextFile(strFile) 
Do Until objFile.AtEndOfStream 
    strLine = objFile.ReadLine 
    'If first for characters = "file" 
     'delete this line 
     strFile.Write "file=" & sUtilOut 
    'End If 
Loop 
objFile.Close 

を:あなたの助けのための

txt = objFS.OpenTextFile(strFile).ReadAll 

Set re = New RegExp 
re.Pattern = "^(File=)[^\r\n]*" 
re.MultiLine = True 

fso.OpenTextFile(strFile, 2).Write re.Replace(txt, "$1" & sUtilOut) 
+0

感謝を!それは私が探していたものですが、私はVBScriptでRegExを使うことができないことを知りませんでした。私はファイル全体を書き直す必要があると思っていましたが、行ごとに行い、 1つ置き換えてください、しかし、この方法ははるかに良く見えます! –

関連する問題