Batch / Find And Edit Lines in TXT file

后端 未结 8 1590
陌清茗
陌清茗 2020-11-28 06:30

I want to create a batch while which finds specific lines in a batch file and are able to edit these lines.

Example:

//TXT FILE//

ex1
ex2
ex3         


        
8条回答
  •  青春惊慌失措
    2020-11-28 07:15

    ghostdog74's example provided the core of what I needed, since I've never written any vbs before and needed to do that. It's not perfect, but I fleshed out the example into a full script in case anyone finds it useful.

    'ReplaceText.vbs
    
    Option Explicit
    
    Const ForAppending = 8
    Const TristateFalse = 0 ' the value for ASCII
    Const Overwrite = True
    
    Const WindowsFolder = 0
    Const SystemFolder = 1
    Const TemporaryFolder = 2
    
    Dim FileSystem
    Dim Filename, OldText, NewText
    Dim OriginalFile, TempFile, Line
    Dim TempFilename
    
    If WScript.Arguments.Count = 3 Then
        Filename = WScript.Arguments.Item(0)
        OldText = WScript.Arguments.Item(1)
        NewText = WScript.Arguments.Item(2)
    Else
        Wscript.Echo "Usage: ReplaceText.vbs   "
        Wscript.Quit
    End If
    
    Set FileSystem = CreateObject("Scripting.FileSystemObject")
    Dim tempFolder: tempFolder = FileSystem.GetSpecialFolder(TemporaryFolder)
    TempFilename = FileSystem.GetTempName
    
    If FileSystem.FileExists(TempFilename) Then
        FileSystem.DeleteFile TempFilename
    End If
    
    Set TempFile = FileSystem.CreateTextFile(TempFilename, Overwrite, TristateFalse)
    Set OriginalFile = FileSystem.OpenTextFile(Filename)
    
    Do Until OriginalFile.AtEndOfStream
        Line = OriginalFile.ReadLine
    
        If InStr(Line, OldText) > 0 Then
            Line = Replace(Line, OldText, NewText)
        End If 
    
        TempFile.WriteLine(Line)
    Loop
    
    OriginalFile.Close
    TempFile.Close
    
    FileSystem.DeleteFile Filename
    FileSystem.MoveFile TempFilename, Filename
    
    Wscript.Quit
    

提交回复
热议问题