bluesteal
Goto Top

VBS Find and Replace Script

Moin Moin,
ich habe folgendes Script gebaut:
'Variablen initialisieren  
DIM Suchen 
DIM Ersetzen 
DIM NeuerInhalt 
DIM Inhalt

'Variablen setzen  
Suchen ="Windows"  
Ersetzen ="MAC OS X"  

'Datei öffnen und auslesen  
Set FSO = CreateObject("Scripting.FileSystemObject")  
Set File = FSO.OpenTextFile("c:\server.txt", 1)  
Inhalt = File.ReadAll
File.Close

'String finden und ersetzen  
NeuerInhalt = Replace(Inhalt, Suchen , Ersetzen) +vbcr


'In Datei schreiben  
Set File = FSO.OpenTextFile("C:\server.txt", 2)  
File.Write NeuerInhalt
File.Close
Das Problem ist nun, sobald ich das Script laufen lasse, wird entweder keine Änderung an der Text-Datei vorgenommen oder die Datei wird total zerstückelt. Ich hoffe ihr könnt mir einen Tipp geben, wo mein Script falsch ist. Vielen Dank

MfG Jan

Content-Key: 82373

Url: https://administrator.de/contentid/82373

Printed on: April 18, 2024 at 14:04 o'clock

Member: bastla
bastla Mar 05, 2008 at 12:06:31 (UTC)
Goto Top
Hallo Bluesteal und willkommen im Forum!

Soferne es sich bei der Textdatei nicht um Unicode handelt, ist das Problem nicht nachvollziehbar - außer der Ersetzung wird ja nur noch am Ende ein CR angefügt ...

Falls doch Unicode, beim Öffnen der Datei jeweils noch als 4. Argument "True" hinzufügen, also zB
Set File = FSO.OpenTextFile("c:\server.txt", 1, True, True)  

Grüße
bastla
Member: Bluesteal
Bluesteal Mar 05, 2008 at 12:53:24 (UTC)
Goto Top
Moin,
vielen Dank. Genau das war der Fehler!

MfG Jan
Member: menace
menace Oct 06, 2008 at 09:22:11 (UTC)
Goto Top
hallo zusammen,

da ich gerade auf der suche nach einem suchen-ersetzen-script bin hätte ich eine frage zu dem obigen beispiel vbs.

ist es möglich, dass man in dem vb-script den neu zu setzenden wert (oben z.b. Ersetzen ="MAC OS X" ) variabel dem entsprechenden aktuellen hostname des PCs vergibt (%computername%)?!


besten dank schon mal!
Member: Biber
Biber Oct 06, 2008 at 10:37:02 (UTC)
Goto Top
Moin menace,

dazu kannst Du entweder über ein WShShell-Object und die Environment-Methode oder über ein WScript.Network-Object zum Ziel kommen.

Set WShell = CreateObject ("WScript.Shell")   
Set ProcEnv = WShell.Environment("Process")  
computername = procEnv("computername")  
-oder-
computername= WShell.ExpandEnvironmentStrings("%COMPUTERNAME%")  
-oder-
Set WNetwork = CreateObject ("WScript.Network")   
computername = WNetwork.computername

Grüße
Biber
Member: menace
menace Oct 06, 2008 at 11:29:02 (UTC)
Goto Top
hallo biber,

besten dank, hat funktioniert!! face-smile