Hjemmeside » hvordan » Erstatt tekst i vanlige tekstfiler fra kommandolinjen

    Erstatt tekst i vanlige tekstfiler fra kommandolinjen

    En veldig nyttig funksjon som mangler fra Windows-biblioteket med kommandolinjeverktøy, er muligheten til å erstatte tekst i vanlige tekstfiler. En funksjon som dette kan brukes til en rekke praktiske oppgaver som mange systemadministratorer utfører, for eksempel:

    • Oppdater konfigurasjons- / INI-filer for å erstatte UNC-baner.
    • Masse oppdaterer brukerinformasjon lagret i INI-filer på en Terminal / Citrix-server.
    • Bruk sammen med skript for å distribuere "templated" data og deretter bruke verdier til de kopierte filene.

    Vår løsning er et VBScript som grensesnitt til Visual Basic Replace-funksjonen. Ved å plassere dette skriptet til et sted i Windows PATH-variabelen, har du nå denne funksjonaliteten tilgjengelig til din disposisjon.

    Bruker

    En gang på systemet kan du ringe skriptet ved å bare bruke kommandoen ReplaceText. Noen eksempler illustrerer måter du kan bruke dette på:

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

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

    Skann alle INI-filer i mappen C: Brukere (+ underkataloger) som erstatter alle forekomster av "Server = Old" med "Server = New" ved hjelp av et sakssensitivt søk:

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

    Skann alle CFG-filer i den nåværende brukerens profil som erstatter "p @ ssw0rd" med "PA $$ woRd" ved hjelp av et saksfølsomt søk:

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

    Som du kan se nedenfor, er skriptet veldig enkelt og kan enkelt endres for å imøtekomme eventuelle spesielle situasjoner du måtte ha. Alternativt kan det være lurt å lage kopier av skriptet som har spesifikke verdier for harddisken, slik at du kan utføre kommandoen med et dobbeltklikk og / eller tillate deg å distribuere det enkelt til andre.

    Manuset

    'Erstatt tekst
    'Skrevet av: Jason Faulkner
    'SysadminGeek.com

    'Dette skriptet skal plasseres i en mappe som er angitt i systemets PATH-variabel.

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

    '/ I (valgfritt) - Teksttilpasning er ikke saksfølsom

    Angi oArgs = WScript.Arguments

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

    Angi oFSO = CreateObject ("Scripting.FileSystemObject")

    Hvis ikke oFSO.FileExists (oArgs (0)) Then
    WScript.Echo "Spesifisert fil finnes ikke."
    Ellers
    Sett oFile = oFSO.OpenTextFile (oArgs (0), 1)
    strText = oFile.ReadAll
    oFile.Close

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

    Angi oFile = oFSO.OpenTextFile (oArgs (0), 2)
    oFile.WriteLine strText
    oFile.Close
    Slutt om

    Ytterligere notater

    Som standard bruker Windows WScript til å utføre VBScript (VBS) -filer. Det eneste problemet dette kan forårsake er at eventuelle feil og / eller meldinger fra skriptet vises som popup-bokser. For et kommandolinjeverktøy er det best disse meldingene vises i konsollen. Det er et par måter du kan oppnå dette på.

    Endre standardbehandleren av VBScript-filer til CScript ved å kjøre denne kommandoen fra ledeteksten (med administratorrettigheter):

    CScript // H: CScript

    Kjør ReplaceText-skriptet eksplisitt ved hjelp av CScript-kommandoen:

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

    Som et spesielt tilfelle betyr kjøring av ReplaceText fra et batch-skript vanligvis CSScript som motoren brukes uavhengig av standardbehandleren. Du vil definitivt ønske å teste dette selv før du stoler på denne funksjonaliteten.

    Last ned ReplaceText Script fra SysadminGeek.com