Hjemmeside » hvordan » Udskift tekst i almindelige tekstfiler fra kommandolinjen

    Udskift tekst i almindelige tekstfiler fra kommandolinjen

    En meget nyttig funktion, der mangler fra Windows-biblioteket med kommandolinjeværktøjer, er evnen til at erstatte tekst i almindelige tekstfiler. En funktion som denne kan bruges til en række praktiske opgaver, som mange systemadministratorer udfører, såsom:

    • Opdater konfigurations- / INI-filer til at erstatte UNC-stier.
    • Masse opdaterer brugeroplysninger gemt i INI-filer på en Terminal / Citrix-server.
    • Brug sammen med scripts til at implementere "templated" data og derefter anvende værdier til de kopierede filer.

    Vores løsning er et VBScript, der grænseflader med Visual Basic Replace funktionen. Ved at placere dette script til en placering i din Windows PATH-variabel, har du nu denne funktionalitet til din rådighed.

    Anvendelser

    Når du er på dit system, kan du ringe til scriptet ved blot at bruge kommandoen ReplaceText. Nogle eksempler illustrerer måder du kan bruge dette på:

    Udskift ordet "null" med "n / a" i filen C: DataValues.csv:

    ReplaceText "C: DataValues.csv" null n / a

    Scan alle INI-filer i mappen C: Users (+ underkataloger), der erstatter alle forekomster af "Server = Old" med "Server = New" ved hjælp af en sårets ufølsom søgning:

    FORFILER / P "C: Brugere" / M * .ini / S / C "Cmd / C ReplaceText @path Server = Gammel server = Ny / I"

    Scan alle CFG-filer i den aktuelle brugers profil, og erstat "p @ ssw0rd" med "PA $$ woRd" ved hjælp af en sagerfølsom søgning:

    FORFILES / P "% UserProfile%" / M * .cfg / S / C "Cmd / C ReplaceText @path p @ ssw0rd PA $$ woRd"

    Som du kan se nedenfor, er scriptet meget enkelt og kan nemt ændres for at imødekomme eventuelle særlige situationer, du måtte have. Alternativt kan du oprette kopier af scriptet, som hardcode bestemte værdier, så du kan udføre kommandoen med et dobbeltklik og / eller lade dig nemt distribuere det til andre.

    Manuskriptet

    'Erstat tekst
    'Skrevet af: Jason Faulkner
    'SysadminGeek.com

    'Dette script skal placeres i en mappe, der er angivet i systemets PATH-variabel.

    'Brug (WScript):
    'ReplaceText FileName OldText NewText [/ I]

    '/ I (valgfrit) - Tekstafstemning er ikke store bogstaver

    Indstil oArgs = WScript.Arguments

    intCaseSensitive = 0
    For i = 3 til oArgs.Count-1
    Hvis UCase (oArgs (i)) = "/ I" Så intCaseSensitive = 1
    Næste

    Indstil oFSO = CreateObject ("Scripting.FileSystemObject")

    Hvis ikke oFSO.FileExists (oArgs (0)) Then
    WScript.Echo "Den specificerede fil eksisterer ikke."
    Andet
    Indstil oFile = oFSO.OpenTextFile (oArgs (0), 1)
    strText = oFile.ReadAll
    oFile.Close

    strText = Erstat (strText, oArgs (1), oArgs (2), 1, -1, intCaseSensitive)

    Indstil oFile = oFSO.OpenTextFile (oArgs (0), 2)
    oFile.WriteLine strText
    oFile.Close
    Afslut Hvis

    Ekstra Noter

    Som standard bruger Windows WScript til at udføre VBScript-filer (VBS). Det eneste problem, det kan medføre, er fejl og / eller beskeder fra scriptet vises som popup-bokse. For et kommandolinjeværktøj er det bedst, at disse meddelelser vises i konsollen. Der er et par måder du kan opnå dette på.

    Skift standardhåndteringen af ​​VBScript-filer til CScript ved at køre denne kommando fra kommandoprompt (med administratorrettigheder):

    CScript // H: CScript

    Kør scriptet ReplaceText eksplicit ved hjælp af CScript-kommandoen:

    CScript "C: PathToReplaceText.vbs" // B Filnavn OldText NewText [/ I]

    Som et specielt tilfælde indebærer udførelse af ReplaceText fra et batch script typisk CScript, som den anvendte motor uanset standardhandleren. Du vil helt sikkert gerne teste dette, men forud for at stole på denne funktionalitet.

    Download ReplaceText Script fra SysadminGeek.com