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:
FORFILES /P “C:Users” /M *.ini /S /C “Cmd /C ReplaceText @path Server=Old Server=New /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
'Replace Text 'Written by: Jason Faulkner 'SysadminGeek.com
'This script should be placed in a folder specified in your system's PATH variable.
'Usage (WScript): 'ReplaceText FileName OldText NewText [/I]
' /I (optional) - Text matching is not case sensitive
Set oArgs = WScript.Arguments
intCaseSensitive = 0 For i = 3 to oArgs.Count-1 If UCase(oArgs(i)) = '/I' Then intCaseSensitive = 1 Next
Set oFSO = CreateObject('Scripting.FileSystemObject')
If Not oFSO.FileExists(oArgs(0)) Then WScript.Echo 'Specified file does not exist.' Else Set oFile = oFSO.OpenTextFile(oArgs(0), 1) strText = oFile.ReadAll oFile.Close
strText = Replace(strText, oArgs(1), oArgs(2), 1, -1, intCaseSensitive)
Set oFile = oFSO.OpenTextFile(oArgs(0), 2) oFile.WriteLine strText oFile.Close End If
Ytterligere notater
Som standard bruker Windows WScript til å utføre VBScript-filer (VBS). 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 FileName OldText NewText [/I]
Som et spesielt tilfelle innebærer kjøring av ReplaceText fra et batch-skript vanligvis CScript 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