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-Key: 279115

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

Printed on: April 24, 2024 at 19:04 o'clock

Mitglied: 114757
114757 Aug 03, 2015, updated at Aug 23, 2015 at 13:34:55 (UTC)
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
Member: aletri
aletri Aug 23, 2015 at 07:08:18 (UTC)
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
Mitglied: 114757
114757 Aug 23, 2015 updated at 07:52:14 (UTC)
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
Member: aletri
aletri Aug 23, 2015 at 11:53:30 (UTC)
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
Mitglied: 114757
114757 Aug 23, 2015 at 13:34:13 (UTC)
Goto Top
Musst du nochmal den Code kopieren vermutlich ist da was schief gelaufen ....
Member: aletri
aletri Aug 23, 2015 at 14:17:00 (UTC)
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
Member: aletri
aletri Aug 23, 2015 at 14:18:22 (UTC)
Goto Top
Meinst Du so?:

siehe unten
Mitglied: 114757
Solution 114757 Aug 23, 2015 updated at 16:47:11 (UTC)
Goto Top
Zeile 11 ist bei dir falsch, das set am Anfang der Zeile muss weg ...
Member: aletri
aletri Aug 23, 2015 at 16:48:11 (UTC)
Goto Top
Hallo jodel32

Besten Dank
Das war's hat nun geklappt.

Schönen Sonntag noch

aleri