Lese schon seit einiger Zeit Beiträge von diesem Forum, und habe mich vor kurzem auch registriert. Nun komme ich leider zu meinem "Problem":
Wir haben hier in der Firma eine Datei die einen bestimmten String hat, und jeden Tag mit einem Batch File geändert werden muss. Diese Datei hat eine für Windows unbekannte Dateiendung, jedoch kann man sie mit dem Editor öffnen da es eigentlich ein reines txt File ist. Nun zu meiner Aufgabe:
Ich soll in dieser Datei einen bestimmten String suchen, ihn ändern, und am Schluss wieder speichern. Mein Ansatz ist, diese Datei temporär zu kopieren, in *.txt zu ändern, den string zu suchen, ändern, abspeichern, und wieder umbenennen und wieder ins richtige Verzeichnis kopieren.
Nun muss ich eben die Zahl 34 einfach durch etwas anderes ersetzen, egal was. Es darf einfach nicht gleich sein. Und da ist die Stelle die ich nicht weiter weiss: Gibt es ein Batch Befehl, der einen String ersetzen kann, oder wie könnte ich das sonst lösen?
wenn ich das jetzt richtig verstanden habe, muss ich deinen 1. Post in eine .vbs Datei schreiben und den 2. Post in die counter.txt? Oder bin ich auf dem Holzweg?
Der Inhalt der 2.ten Postings von Cybquest gehört in die vbs. Des Weiteren musst du eine Datei counter.txt anlegen, in der die Anfangszahl steht. Den Pfad zur counter.txt musst du dann natürlich bei dir noch anpassen.
das Script funktioniert, doch die Zahl wird im counter selbst erhöht, und nicht in der owp datei. OK nochmal:
ich wollte die .owp datei temporär kopieren, in .txt umbenennen, damit ich sie bearbeiten kann. Dann sollte das Script den String suchen, und eben mit irgendetwas ersetzen (um eins erhöhen, aktuelles Datum...) und dann abspeichern. Dann wird die .txt datei wieder in .owp umgewandelt, und an die richtige Stelle kopiert.
das temporäre kopieren, umbennen und wieder zurück kopieren ist kein Problem, das mache ich mit einer Batch Datei, aber eben den String auslesen und ändern weiss ich nicht, wie man das mit einem Script lösen kann.
Sorry falls ich mein Problem nicht klar ausgedrückt habe...
Hmmm... bei mir funktioniert das Script.
Es ändert halt direkt die OWP-Datei ohne den Umweg über txt.
Also beim ersten Durchgang muss die Zahl in counter.txt identisch mit der Zahl in test.owp sein! Und in der counter.txt muss sie ohne Leerzeichen, ohne Zeilenumbuch danach o.ä. drin stehen! Sonst gehts nicht...
muss mich wieder melden, der Auftraggeber möchte eine Änderung am Script.
Er möchte, dass das Script ohne diese Counter Datei funktioniert. Hab mich jetzt ein klein wenig mit dem Script auseinandergesetzt, jedoch kam ich nicht sehr weit. Ich hab es bereits zu Stande gebracht, dass er die Zahl aus der Originaldatei ausliest, und auch ersetzt, jedoch fällt dann der ganze Rest weg. So, dass am Schluss nur die ersetzte Zahl in der Datei steht, was mir nicht viel bringt.
Hier mal mein aktueller Code:
Code:
Set MyFiles = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2
varDatei="U:\officeatwork_Script\michelgruppech.owp"
Set f = MyFiles.OpenTextFile(varCntDatei, ForReading)
varCount = f.ReadAll
varCountNeu = varCount +1
Set f = MyFiles.OpenTextFile(varDatei, ForWriting, True)
f.Write varCountNeu
varSearch="<Version>" & varCount & "</Version>"
varReplace="<Version>" & varCountNeu & "</Version>"
Set f = MyFiles.OpenTextFile(varDatei, ForReading)
Text = f.ReadAll
Set f = MyFiles.OpenTextFile(varDatei, ForWriting, True)
f.Write Replace(Text, varSearch, varReplace,1,-1,1)