Domovská » jak » Nahradit text v prostém textovém souboru z příkazového řádku

    Nahradit text v prostém textovém souboru z příkazového řádku

    Velmi užitečnou funkcí, která chybí v knihovně Windows nástrojů příkazové řádky, je schopnost nahradit text v prostém textovém souboru. Taková funkce může být použita pro různé praktické úkoly, které mnoho správců systému provádí, například:

    • Aktualizujte konfigurační / INI soubory nahradit cesty UNC.
    • Hromadná aktualizace informací o uživateli uložená v souborech INI na serveru Terminal / Citrix.
    • Použít ve spojení se skripty k nasazení "template" data a potom použít hodnoty kopírované soubory.

    Naše řešení je VBScript, který je propojen s funkcí Visual Basic Replace. Tím, že umístíte tento skript do umístění v proměnné Windows PATH, nyní máte tuto funkci k dispozici.

    Použití

    Jakmile je ve vašem systému, můžete skript volat jednoduše pomocí příkazu ReplaceText. Několik příkladů objasní způsob, jakým můžete tuto funkci použít:

    Nahradit slovo "null" s "n / a" v souboru C: DataValues.csv:

    Nahradit text "C: DataValues.csv" null n / a

    Skenujte všechny soubory INI ve složce C: Users (+ sub directories) nahrazující všechny výskyty "Server = Old" "Server = New"

    FORFILES / P "C: Uživatelé" / M * .ini / S / C "Cmd / C ReplaceText @path Server =

    Prohledávejte všechny soubory CFG v profilu aktuálního uživatele, které nahradí slovo "p @ ssw0rd" pomocí "PA $$ woRd" pomocí vyhledávacího dotazu:

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

    Jak je vidět níže, skript je velmi jednoduchý a snadno se upravuje tak, aby vyhovoval jakýmkoli zvláštním situacím, které byste mohli mít. Můžete také vytvořit kópie skriptu, které hardcode konkrétní hodnoty, takže můžete spustit příkaz s dvojitým kliknutím a / nebo vám umožní snadno distribuovat ostatním.

    Scénář

    'Nahradit text
    "Napsal: Jason Faulkner
    'SysadminGeek.com

    'Tento skript by měl být umístěn do složky zadané v proměnné PATH vašeho systému.

    'Použití (WScript):
    'ReplaceText Název_souboru OldText NewText [/ I]

    '/ I (volitelně) - Rozpoznávání textu nerozlišuje velká a malá písmena

    Nastavte oArgs = WScript.Arguments

    intCaseSensitive = 0
    Pro i = 3 až oArgs.Count-1
    Pokud UCase (oArgs (i)) = "/ I" Pak intCaseSensitive = 1
    další

    Nastavte oFSO = CreateObject ("Scripting.FileSystemObject")

    Pokud není oFSO.FileExists (oArgs (0)) Pak
    WScript.Echo "Zadaný soubor neexistuje."
    Jiný
    Nastavte oFile = oFSO.OpenTextFile (oArgs (0), 1)
    strText = oFile.ReadAll
    oFile.Close

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

    Nastavte oFile = oFSO.OpenTextFile (oArgs (0), 2)
    oFile.WriteLine strText
    oFile.Close
    Konec Pokud

    Další poznámky

    Ve výchozím nastavení systém Windows používá soubor WScript pro spuštění souborů VBScript (VBS). Jediným problémem, který může způsobit, jsou chyby a / nebo zprávy ze skriptu, které se objeví jako vyskakovací pole. U nástroje příkazového řádku je nejlepší, aby se tyto zprávy zobrazovaly v konzole. Existuje několik způsobů, jak to dokážete dosáhnout.

    Změnit výchozí popisovač souborů VBScript na CScript spuštěním tohoto příkazu z příkazového řádku (s oprávněním správce):

    CScript // H: CScript

    Spusťte skript ReplaceText explicitně pomocí příkazu CScript:

    CScript "C: PathToReplaceText.vbs" // B Název_souboru OldText NewText [/ I]

    Jako zvláštní případ provádí příkaz ReplaceText z dávkového skriptu typicky CScript jako použitý stroj bez ohledu na výchozí obslužný program. Určitě to budete chtít otestovat, i když se opíšete o tuto funkci.

    Stažení skriptu ReplaceText ze serveru SysadminGeek.com