Ersätt text i vanliga textfiler från kommandoraden
En mycket användbar funktion som saknas i Windows-biblioteket med kommandoradsverktyg är möjligheten att ersätta text i vanliga textfiler. En funktion som denna kan användas för en rad praktiska uppgifter som många systemadministratörer utför, till exempel:
- Uppdatera konfigurations / INI-filer för att ersätta UNC-banor.
- Massuppdatera användarinformation lagrad i INI-filer på en Terminal / Citrix-server.
- Använd i kombination med skript för att distribuera "templated" data och använd sedan värden på de kopierade filerna.
Vår lösning är ett VBScript som gränsar till funktionen Visual Basic Replace. Genom att placera det här skriptet i en plats i din Windows PATH-variabel, har du nu den här funktionaliteten tillgänglig till ditt förfogande.
användningsområden
En gång på ditt system kan du ringa skriptet genom att helt enkelt använda kommandot ReplaceText. Några exempel illustrerar hur du kan använda detta:
Byt ut ordet "null" med "n / a" i filen C: DataValues.csv:
ReplaceText "C: DataValues.csv" null n / a
Skanna alla INI-filer i mappen C: Users (+ sub-kataloger) som ersätter alla förekomster av "Server = Old" med "Server = New" med en obestämd sökning:
FORFILER / P "C: Användare" / M * .ini / S / C "Cmd / C ReplaceText @ path Server = Gamla Server = Ny / I"
Skanna alla CFG-filer i den nuvarande användarens profil som ersätter "p @ ssw0rd" med "PA $$ woRd" med hjälp av en känslig sökning:
FORFILER / P "% UserProfile%" / M * .cfg / S / C "Cmd / C ReplaceText @ sökväg p @ ssw0rd PA $$ woRd"
Som du kan se nedan är skriptet mycket enkelt och kan enkelt ändras för att tillgodose alla speciella situationer du kan ha. Alternativt kanske du vill skapa kopior av skriptet som specifika värden för hårddisken, så att du kan utföra kommandot med ett dubbelklick och / eller låta dig enkelt distribuera det till andra.
Manuset
"Byt text
"Skriven av: Jason Faulkner
'SysadminGeek.com
'Det här skriptet ska placeras i en mapp som anges i systemets PATH-variabel.
"Användning (WScript):
'ReplaceText FileName OldText NewText [/ I]
'/ I (tillval) - Text matchning är inte skiftlägeskänslig
Ange oArgs = WScript.Arguments
intCaseSensitive = 0
För i = 3 till oArgs.Count-1
Om UCase (oArgs (i)) = "/ I" Då intCaseSensitive = 1
Nästa
Ange oFSO = CreateObject ("Scripting.FileSystemObject")
Om inte oFSO.FileExists (oArgs (0)) Då
WScript.Echo "Den angivna filen existerar inte."
Annan
Ange oFile = oFSO.OpenTextFile (oArgs (0), 1)
strText = oFile.ReadAll
oFile.Close
strText = Ersätt (strText, oArgs (1), oArgs (2), 1, -1, intCaseSensitive)
Ange oFile = oFSO.OpenTextFile (oArgs (0), 2)
oFile.WriteLine strText
oFile.Close
Avsluta om
Ytterligare anmärkningar
Som standard använder Windows WScript för att utföra VBScript-filer (VBS). Det enda problemet som kan orsaka är att eventuella fel och / eller meddelanden från skriptet kommer att visas som popup-fält. För ett kommandoradsverktyg är det bäst att dessa meddelanden visas i konsolen. Det finns ett par sätt att göra detta.
Ändra standardhanteraren av VBScript-filer till CScript genom att köra det här kommandot från kommandotolken (med administratörsrättigheter):
CScript // H: CScript
Kör ReplaceText-skriptet explicit med hjälp av CScript-kommandot:
CSScript "C: PathToReplaceText.vbs" // B Filnamn OldText NewText [/ I]
Som ett speciellt fall innebär exekvering av ReplaceText från ett batch-script vanligtvis CSScript som motorn används oberoende av standardhanteraren. Du kommer definitivt vilja testa detta innan du förlita dig på denna funktionalitet.
Hämta ReplaceText Script från SysadminGeek.com