Erstatt tekst i vanlige tekstfiler fra kommandolinjen

Innholdsfortegnelse:

Erstatt tekst i vanlige tekstfiler fra kommandolinjen
Erstatt tekst i vanlige tekstfiler fra kommandolinjen

Video: Erstatt tekst i vanlige tekstfiler fra kommandolinjen

Video: Erstatt tekst i vanlige tekstfiler fra kommandolinjen
Video: Top 10 Windows 10 Free Apps - YouTube 2024, April
Anonim

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

Anbefalt: