aletri
Goto Top

Textzeile in Datei einfügen wenn bestimmtes Wort nicht vorhanden

Guten Abend allerseits

Dieser Script fügt eine Textzeile in Datei ein aber auch dann wenn Zeile in diesem Fall "HIMEMFIX=1"
schon vorhanden ist, mit dem Resultat, dass die Zeile dann doppelt da steht!?

Ich möchte aber, dass der Script nichts tut sollte die Zeile bereits vorhanden sein!
Ich habe schon überall rum gegoogelt aber nichts passendes gefunden!

Hier der Script:
Dim objShell,appdata
Set objShell = CreateObject("wscript.shell")  
appdata = objShell.ExpandEnvironmentStrings("%appdata%")  

strNewLine = "HIMEMFIX=1"  
strFileName = (appdata & "\Microsoft\FSX\fsx.cfg")  

Const FOR_READING = 1
Const FOR_WRITING = 2
strCheckForString = UCase("[GRAPHICS]")  
Set objFS = CreateObject("Scripting.FileSystemObject")  
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close
arrLines = Split(strContents, vbNewLine)
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)
For Each strLine In arrLines
If (Left(UCase(LTrim(strLine)),Len(strCheckForString)) = strCheckForString) Then
objTS.WriteLine strLine
objTS.WriteLine strNewLine
else
objTS.WriteLine strLine
End If
next

Besten Dank im Voraus für eure Hilfe.
aletri

Content-ID: 279115

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

Ausgedruckt am: 24.11.2024 um 08:11 Uhr

114757
114757 03.08.2015, aktualisiert am 23.08.2015 um 15:34:55 Uhr
Goto Top
Moin,
solltest du eigentlich inzwischen wissen, anhand der Beispiele die wir dir hierzu schon zu genüge geliefert haben ...
Dim objShell,appdata, regex, objFS, strContent, strFilename
Set objShell = CreateObject("wscript.shell")  
Set objFS = CreateObject("Scripting.FileSystemObject")  
Set regex = CreateObject("vbscript.regexp")  
regex.Multiline = True: regex.IgnoreCase = True
regex.Pattern = "^HIMEMFIX=1"  

appdata = objShell.ExpandEnvironmentStrings("%appdata%")  
strFileName = appdata & "\Microsoft\FSX\fsx.cfg"  

strContent = objFS.OpenTextFile(strFileName, 1).ReadAll()
if not regex.Test(strContent) then
    strContent = Replace(strContent,"[GRAPHICS]","[GRAPHICS]" & vbNewline & "HIMEMFIX=1",1,1,1)  
    objFS.OpenTextFile(strFileName, 2).Write(strContent)
end If

set regex = Nothing
Set objFS = Nothing 
Set objShell = Nothing
Gruß jodel32
aletri
aletri 23.08.2015 um 09:08:18 Uhr
Goto Top
Hallo jodel32
Sorry dass es so lange gedauert hat war viel und lange unterwegs...trotzdem noch herzlichen Dank.
Habe Script ausprobiert, folgende Fehlermeldung:

Zeile: 1
Zeichen: 37
Fehler: Name erneut definiert
Code: 800A0411
Quelle: Kompilierungsfehler in Micorsoft VBscript

Hab ich was übersehen?

Gruss
aletri
114757
114757 23.08.2015 aktualisiert um 09:52:14 Uhr
Goto Top
Sorry da war eine Variablendeklaration in Zeile 1 doppelt ...ist korrigiert. Hätte man aber auch eigentlich selber sehen können face-wink
aletri
aletri 23.08.2015 um 13:53:30 Uhr
Goto Top
hallo jodel32
Habe Script ausprobiert. Die erste Fehlermeldung mit der Variablendeklaration schien mir halbwegs verständlich doch diese !??:

Zeile: 11
Zeichen: 1
Fehler: Objekt erforderlich: '[string: "[SOUND] AmbientUIMu"]'
Code: 800A01A8
Quelle: Laufzeitfehler in Microsoft VBScript

Gruss
aletri
114757
114757 23.08.2015 um 15:34:13 Uhr
Goto Top
Musst du nochmal den Code kopieren vermutlich ist da was schief gelaufen ....
aletri
aletri 23.08.2015 um 16:17:00 Uhr
Goto Top
Dim objShell,appdata, regex, objFS, strContent, strFilename
Set objShell = CreateObject("wscript.shell")  
Set objFS = CreateObject("Scripting.FileSystemObject")  
Set regex = CreateObject("vbscript.regexp")  
regex.Multiline = True: regex.IgnoreCase = True
regex.Pattern = "^HIMEMFIX=1"  

appdata = objShell.ExpandEnvironmentStrings("%appdata%")  
strFileName = (appdata & "\Microsoft\FSX\fsx.cfg")  

Set strContent = objFS.OpenTextFile(strFileName, 1).ReadAll()
if not regex.Test(strContent) then
    strContent = Replace(strContent,"[GRAPHICS]","[GRAPHICS]" & vbNewline & "HIMEMFIX=1",1,1,1)  
    objFS.OpenTextFile(strFileName, 2).Write(strContent)
end If

set regex = Nothing
Set objFS = Nothing 
Set objShell = Nothing
aletri
aletri 23.08.2015 um 16:18:22 Uhr
Goto Top
Meinst Du so?:

siehe unten
114757
Lösung 114757 23.08.2015 aktualisiert um 18:47:11 Uhr
Goto Top
Zeile 11 ist bei dir falsch, das set am Anfang der Zeile muss weg ...
aletri
aletri 23.08.2015 um 18:48:11 Uhr
Goto Top
Hallo jodel32

Besten Dank
Das war's hat nun geklappt.

Schönen Sonntag noch

aleri