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):
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?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148983
Url: https://administrator.de/contentid/148983
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo DrAlcome!
Völlig untgetestet etwa so:
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
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)
Grüße
bastla