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