aletri
Goto Top

Per VBScript Zeile nach bestimmter Stelle einfügen dabei mit numerierung fortfahren!

Guten Abende allerseits

Dies ist ein Auszug der Datei an der eine Zeile eingefügt werden soll:
[Main]
User Objects=Airplane, Helicopter
SimObjectPaths.0=SimObjects\Airplanes
SimObjectPaths.1=SimObjects\Rotorcraft
SimObjectPaths.2=SimObjects\GroundVehicles
SimObjectPaths.3=SimObjects\Boats
SimObjectPaths.4=SimObjects\Animals
SimObjectPaths.5=SimObjects\Misc
HIER muss Zeile eingfügt werden!
Maximized=2
Location=440,130,1480,908,\\.\DISPLAY1
HideMenuNormal=0


Dieser Script fügt die Zeile zwar nach "SimObjectsPaths.5=SimObjects\Misc" ein!   
Nun sollte der Script nach dem letzten vorhandenen "SimObjectPaths.X=egal was dachach kommt!! (X steht für irgend eine Zahl)  
einfügen und dabei mit numerierung fortfahren!


Dim objShell,appdata
Set objShell = CreateObject("wscript.shell")  
appdata = objShell.ExpandEnvironmentStrings("%appdata%")  

strNewLine = "SimObjectPaths.X=SimObjects\ATiObjects"  
strFileName = (appdata & "\Microsoft\FSX\fsx.cfg")  

Const FOR_READING = 1
Const FOR_WRITING = 2
strCheckForString = UCase("SimObjectPaths.5=SimObjects\Misc")  
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

Content-Key: 299290

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

Ausgedruckt am: 28.03.2024 um 08:03 Uhr

Mitglied: 126919
Lösung 126919 16.03.2016 aktualisiert um 18:38:20 Uhr
Goto Top
Cherio,
Dim objShell,appdata
Set objShell = CreateObject("wscript.shell")  
appdata = objShell.ExpandEnvironmentStrings("%appdata%")  

strNewLine = "SimObjectPaths.X=SimObjects\ATiObjects"  
strFileName = appdata & "\Microsoft\FSX\fsx.cfg"  

Const FOR_READING = 1
Const FOR_WRITING = 2
strCheckForString = UCase("SimObjectPaths")  
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 i = 0 To UBound(arrLines)
  if Len(arrLines(i)) >= Len(strCheckForString) then
    If Left(UCase(LTrim(arrLines(i))),Len(strCheckForString)) = strCheckForString and Left(UCase(LTrim(arrLines(i+1))),Len(strCheckForString)) <> strCheckForString Then
        num = CInt(Split(Split(arrLines(i),".")(1),"=")(0)) + 1  
        objTS.WriteLine arrLines(i) & vbNewline & Replace(strNewLine,"X",num)  
    else
        objTS.WriteLine arrLines(i)
    End If
Else
    objTS.WriteLine arrLines(i)
End if
next
objTS.Close
Mitglied: aletri
aletri 16.03.2016 um 18:35:21 Uhr
Goto Top
Hallo Flachkoepper
Besten Dank für die schnelle Antwort.
Hab gleich den Script laufen lassen: kommt folgende Fehlermeldung: Line: 18
Char: 5
Error: Subscript out of range: '[number:271]'
Code: 800A0009
Mitglied: 126919
126919 16.03.2016 aktualisiert um 18:39:32 Uhr
Goto Top
Nur vergessen auf die Länge aller Zeilen zu prüfen... oben korrigiert.
Mitglied: aletri
aletri 17.03.2016 um 07:35:39 Uhr
Goto Top
Guten Morgen Flachkoepper
Dein Scirpt läuft einwandfrei!
Ein Super Dankeschön
Beste Grüssse
aletri