dralcome
Goto Top

VB Script zum ändern einer Textzeile mit vorheriger Abfrage

Ich möchte in einer Datei eine Textzeile ändern, sofern diese einen falschen Eintrag hat. Wenn der Eintrag stimmt, soll nix gemacht werden.

Ahoi Kameraden!

Senor Google hat mir in dieser Sache zwar schon enorm weitergeholfen, jetzt bleibe ich aber an einem Punkt hängen wo ich nicht ohne Hilfe weiter komme.
Ich möchte die Cache-Pfade von Java per Script auf ein anderes Verzeichnis umbiegen, dazu muss ich in der Datei "deployment.properties" die Pfade ändern.

Ich bin schonmal soweit dass ich einen Pfad ändern kann, sobald der Pfad den ich vorher abfrage immer gleich ist.
Sieht momentan so aus (Die "deployment.properties" liegt im Beispiel auf D:\temp):

const ForReading=1
const ForWriting=2

set objFSO		= createobject("Scripting.FileSystemObject")  

set objFile = objFSO.opentextfile("d:\temp\deployment.properties", ForReading)  
strText_java1 = objFile.readall
objFile.Close

strNewText_java1 = replace(strText_java1, "deployment.user.cachedir=D\:\\falsch", "deployment.user.cachedir=D\:\\richtig")  
set objFile = objFSO.opentextfile("d:\temp\deployment.properties", ForWriting)  
objFile.WriteLine strNewText_java1
objFile.Close

Das Script bewirkt in dieser Form dass der Pfad d:\falsch in d:\richtig geändert wird.
Nur wie kriege ich das hin, wenn der ursprüngliche Pfad auf ein ganz anderes Verzeichnis verweist, z.B. der Standard-Pfad "c:\dokumte und blabla...\sun\cache\"?
Ich hatte es mal probiert mit einer IF-NOT-Abfrage, also wenn da NICHT steht D:\richtig, dann soll er das Script ausführen, ansonsten halt nur eine Messagebox mit "Alles OK".
Nur hab ich mich da irgendwie vertan, er hat dann immer die Messagebox gebracht und den Pfad nicht geändert.

Wie würdet ihr das machen?

Content-Key: 148983

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

Printed on: April 23, 2024 at 17:04 o'clock

Member: bastla
bastla Aug 14, 2010 at 09:27:09 (UTC)
Goto Top
Hallo DrAlcome!

Völlig untgetestet etwa so:
F = "d:\temp\deployment.properties"  
TOld = "deployment.user.cachedir="  
TNew = "deployment.user.cachedir=D\:\\richtig"  

LOld = Len(TOld)
Set fso = createobject("Scripting.FileSystemObject")  
T = Split(fso.OpenTextFile(F).ReadAll,vbCrLf)

For i = 0 To UBound(T)
    If Left(T(i), LOld) = TOld Then
        If T(i) <> TNew Then
            T(i) = TNew
            ToWrite = True
        End If
    End If
Next

If ToWrite Then fso.CreateTextFile(F).Write Join(T,vbCrLf)
Jede Zeile, die mit "deployment.user.cachedir=" (Groß-/Kleinschreibung wird beachtet) beginnt, wird, falls sie nicht bereits mit der neuen Zeile "deployment.user.cachedir=D\:\\richtig" übereinstimmt, durch Letztere ersetzt. Falls keine Ersetzung durchgeführt wurde, wird die Datei nicht neu geschrieben.

Grüße
bastla
Member: DrAlcome
DrAlcome Aug 14, 2010 at 15:49:49 (UTC)
Goto Top
Yeah, habs grade ausprobiert - es tut genau das was es soll! face-smile

Dankeschön! face-smile