http://dieseyer.de • all rights reserved • © 2011 v11.4

'v2.7********************************************************
' File: StringInDateiTauschen.vbs
' Autor: dieseyer@gmx.de
' dieseyer.de
'
' In den Zeilen dürfen keine Anführungszeichen " stehen!
'
' dateiliste.txt stellt eine Liste der zu prüfenden Dateien
' bereit. Beim Skriptaufruf wird nach der zu suchenden
' Zeichenkette gefragt. Diese wird bei der Abfrage, wie die
' Zeichenkette zukünftig aussehen soll angezeigt und
' kann geändert werden.
'************************************************************

Option Explicit ' Siehe http://dieseyer.de/dse-wsh-lernen.html#OptionExpl

Dim fso, fo, fi, FinList, Fin, Fout
Dim Ziel, Quelle, WSHShell, ZielVerz
Dim TextX, Text1, Text2, Text3, Txt(), i, i1
Dim aHTML, eHTML, StringAlt, StringNeu, iText, DateiListe

Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

ZielVerz = "m:\dieseyer.test"
ZielVerz = fso.GetParentFolderName( WScript.ScriptFullName )
DateiListe = ZielVerz & "\dateiliste.txt"

If not fso.FileExists( DateiListe ) Then MsgBox DateiListe & " existiert nicht!", , WSCript.ScriptName
If not fso.FileExists( DateiListe ) Then WScript.Quit

'---------------------------------------------------------
' DateiListe zeilenweise lesen (für Anzeige)
'---------------------------------------------------------
iText = ""
Set FinList = FSO.OpenTextFile( DateiListe, 1 ) ' Datei zum Lesen öffnen
Do While Not (FinList.atEndOfStream) ' wenn Datei nicht zu ende ist, weiter machen
TextX = FinList.Readline ' eine Zeile lesen
If not Left ( TextX, 1 ) = ";" AND not Left ( TextX, 1 ) = " " then
Text1 = Text1 & vbCRLF & " " & TextX
End If
Loop
FinList.Close
Set FinList = nothing


TextX = ""
TextX = TextX & "In folgenden Dateien werden Zeichenketten ausgetauscht:" & vbCRLF
TextX = TextX & Text1
i = MsgBox (TextX, 4 + 32 +256, WScript.Scriptname)
If not i = vbYes then MsgBox " . . . dann eben nicht!", , WScript.Scriptname
If not i = vbYes then WScript.Quit

Text1 = ""
Text1 = Text1 & "Wie lautet die Zeichenfolge (StringAlt), die erstezt werden soll?"
StringAlt = InputBox ( Text1 , WSCript.ScriptName , StringAlt)
If StringAlt = "" then
WSHShell.PopUp " . . . dann eben nicht!", , WScript.Scriptname
WSCript.Quit
End If

Text1 = ""
Text1 = Text1 & "Folgende Zeichenfolge (StringAlt) soll in den soeben gezeigten Dateien ausgetauscht werden."
Text1 = Text1 & "Ändern Sie jetzt diese Zeichenkette, um festzulegen, wie die Zeichenkette in Zukunft (StringNeu) aussehen soll."
StringNeu = InputBox ( Text1 , WSCript.ScriptName , StringAlt)
If StringNeu = "" then
WSHShell.PopUp " . . . dann eben nicht!", , WScript.Scriptname
WSCript.Quit
End If
If StringAlt = StringNeu then
WSHShell.PopUp "Wenn StringNeu" & vbCRLF & " " & StringNeu & vbCRLF & "und StringAlt" & vbCRLF & " " & StringAlt & vbCRLF & "gleich sind, wird's nichts!", , WScript.Scriptname
WSCript.Quit
End If

TextX = "DAS IST DIE LETZTE WARNUNG!" & vbCRLF & vbCRLF & TextX
i = MsgBox (TextX, 4 + 48 +256, WScript.Scriptname)
If not i = vbYes then MsgBox " . . . dann eben nicht!", , WScript.Scriptname
If not i = vbYes then WScript.Quit

Text1 = ""
Text2 = ""
'---------------------------------------------------------
' DateiListe zeilenweise lesen & Zeichenkette(n) tauschen
'---------------------------------------------------------
Set FinList = FSO.OpenTextFile( DateiListe, 1 ) ' DateiListe-Datei zum Lesen öffnen
Do While Not (FinList.atEndOfStream) ' wenn DateiListe-Datei nicht zu ende ist, weiter machen
TextX = FinList.Readline ' eine Zeile lesen
If not Left ( TextX, 1 ) = ";" AND not Left ( TextX, 1 ) = " " then
If not Text2 = "" then
Text1 = Text1 & vbCRLF & TextX & vbTab & " übersprungen"
Else
' MsgBox textx
Text3 = StringInDateiTauschen( TextX, StringAlt, StringNeu) ' Function Aufruf

if vbcancel = WSHShell.Popup (TextX & " . . . wurde bearbeitet.", 1, WScript.ScriptName, 1 + 64 ) Then Text2 = "übergehen"
Text1 = Text1 & vbCRLF & TextX & Text3
' Text1 = Text1 & vbCRLF & TextX & i
End If
End If
Loop
FinList.Close
Set FinList = nothing

MsgBox Text1, , WScript.ScriptName


WScript.Quit


Function StringInDateiTauschen (Datei, Suchen, Ersetzen)
Dim FileContents, dFileContents

if not WScript.CreateObject("Scripting.FileSystemObject").FileExists(Datei) then WScript.CreateObject("WScript.Shell").PopUp "Datei nicht gefunden!", 15, WScript.Scriptname
if not WScript.CreateObject("Scripting.FileSystemObject").FileExists(Datei) then Exit Function

FileContents = WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile(Datei).ReadAll ' Datei einlesen

dFileContents = Replace(FileContents, Suchen, Ersetzen, 1, -1, 1) ' Ersetze alle Strings im Quellfile

If dFileContents <> FileContents Then ' Vergleiche Quelle und Ergebnis
WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile(Datei, 2, True).Write dFileContents ' Schreibe Ergebnis wenn Unterschied besteht
' WScript.CreateObject("WScript.Shell").PopUp "Austausch in Datei """ & Datei & """ abgeschlossen " , 1, WSCript.ScriptName, vbExclamation
Else
' WScript.CreateObject("WScript.Shell").PopUp "Der angegebene String ==|" & Suchen & "|== konnte nicht in der Datei """ & Datei & """ gefunden werden." , 5, WSCript.ScriptName, vbExclamation
End If

End Function ' StringInDateiTauschen

http://dieseyer.de • all rights reserved • © 2011 v11.4