Hemsida » hur » Ersätt text i vanliga textfiler från kommandoraden

    Ersätt text i vanliga textfiler från kommandoraden

    En mycket användbar funktion som saknas i Windows-biblioteket med kommandoradsverktyg är möjligheten att ersätta text i vanliga textfiler. En funktion som denna kan användas för en rad praktiska uppgifter som många systemadministratörer utför, till exempel:

    • Uppdatera konfigurations / INI-filer för att ersätta UNC-banor.
    • Massuppdatera användarinformation lagrad i INI-filer på en Terminal / Citrix-server.
    • Använd i kombination med skript för att distribuera "templated" data och använd sedan värden på de kopierade filerna.

    Vår lösning är ett VBScript som gränsar till funktionen Visual Basic Replace. Genom att placera det här skriptet i en plats i din Windows PATH-variabel, har du nu den här funktionaliteten tillgänglig till ditt förfogande.

    användningsområden

    En gång på ditt system kan du ringa skriptet genom att helt enkelt använda kommandot ReplaceText. Några exempel illustrerar hur du kan använda detta:

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

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

    Skanna alla INI-filer i mappen C: Users (+ sub-kataloger) som ersätter alla förekomster av "Server = Old" med "Server = New" med en obestämd sökning:

    FORFILER / P "C: Användare" / M * .ini / S / C "Cmd / C ReplaceText @ path Server = Gamla Server = Ny / I"

    Skanna alla CFG-filer i den nuvarande användarens profil som ersätter "p @ ssw0rd" med "PA $$ woRd" med hjälp av en känslig sökning:

    FORFILER / P "% UserProfile%" / M * .cfg / S / C "Cmd / C ReplaceText @ sökväg p @ ssw0rd PA $$ woRd"

    Som du kan se nedan är skriptet mycket enkelt och kan enkelt ändras för att tillgodose alla speciella situationer du kan ha. Alternativt kanske du vill skapa kopior av skriptet som specifika värden för hårddisken, så att du kan utföra kommandot med ett dubbelklick och / eller låta dig enkelt distribuera det till andra.

    Manuset

    "Byt text
    "Skriven av: Jason Faulkner
    'SysadminGeek.com

    'Det här skriptet ska placeras i en mapp som anges i systemets PATH-variabel.

    "Användning (WScript):
    'ReplaceText FileName OldText NewText [/ I]

    '/ I (tillval) - Text matchning är inte skiftlägeskänslig

    Ange oArgs = WScript.Arguments

    intCaseSensitive = 0
    För i = 3 till oArgs.Count-1
    Om UCase (oArgs (i)) = "/ I" Då intCaseSensitive = 1
    Nästa

    Ange oFSO = CreateObject ("Scripting.FileSystemObject")

    Om inte oFSO.FileExists (oArgs (0)) Då
    WScript.Echo "Den angivna filen existerar inte."
    Annan
    Ange oFile = oFSO.OpenTextFile (oArgs (0), 1)
    strText = oFile.ReadAll
    oFile.Close

    strText = Ersätt (strText, oArgs (1), oArgs (2), 1, -1, intCaseSensitive)

    Ange oFile = oFSO.OpenTextFile (oArgs (0), 2)
    oFile.WriteLine strText
    oFile.Close
    Avsluta om

    Ytterligare anmärkningar

    Som standard använder Windows WScript för att utföra VBScript-filer (VBS). Det enda problemet som kan orsaka är att eventuella fel och / eller meddelanden från skriptet kommer att visas som popup-fält. För ett kommandoradsverktyg är det bäst att dessa meddelanden visas i konsolen. Det finns ett par sätt att göra detta.

    Ändra standardhanteraren av VBScript-filer till CScript genom att köra det här kommandot från kommandotolken (med administratörsrättigheter):

    CScript // H: CScript

    Kör ReplaceText-skriptet explicit med hjälp av CScript-kommandot:

    CSScript "C: PathToReplaceText.vbs" // B Filnamn OldText NewText [/ I]

    Som ett speciellt fall innebär exekvering av ReplaceText från ett batch-script vanligtvis CSScript som motorn används oberoende av standardhanteraren. Du kommer definitivt vilja testa detta innan du förlita dig på denna funktionalitet.

    Hämta ReplaceText Script från SysadminGeek.com