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