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