hellemon 10 Geschrieben 14. November 2005 Autor Melden Teilen Geschrieben 14. November 2005 Hallo @lefg, Nochmals vielen Dank, ich habe gerade deinen Code ausprobiert und sehe das der Ansatz richtig ist. Nur wie ich das ganze jetzt sehe macht dein Code folgendes: aus deine control.txt (denke bei mir test.cfg) werden die Daten ausgelesen und in eine Variablen gespeichert. #wcontrol server=Mxx01W2K1072,172.10.10.72 client id=123fg0j mac=00040012138b danach generierst du einen neue Textdatei (ccontrol.txt) wo diese gespeicherten Variablen wieder reingeschrieben werden. #newcontrol server=Mxx01W2K1072,172.10.10.72 client id=123fg0j mac=00040012138b vom Grundprinzip genau das was ich suche, nur sollte die control.txt (test.cfg) unberührt bleiben. Und nur die Textzeile server= ............... geändert werden oder sogar nur überschrieben werden. Das heißt die control.txt (test.cfg) ist das Endprodukt nach dem ändern der Textzeile server=Mxx01W2K1072,172.10.10.72 Ich versuche es nochmal zu erklären: bestehende Datei (test.cfg): #wcontrol server=Mxx01W2K1072,172.10.10.72 client id=123fg0j mac=00040012138b danach würde ich eine neue Textdatei anlegen (bsp: servername.txt) mit folgenden Inhalt [b]server=Axx01W2K1472,172.10.14.72[/b] und am Ende müsste diese Datei (test.cfg) wieder rauskommen: #wcontrol [b]server=Axx01W2K1472,172.10.14.72[/b] client id=123fg0j mac=00040012138b Bitte verzeih wenn ich es nochmal erkläre aber diese Datei ist sehr wichtig was die Client Server Kommunikation in der Softwareverteilung angeht. Wenn diese Datei nicht passt verliere ich den Client in der Softwareverteilung. Ist das ohne großen Aufwand möglich? Will da nicht das du deine ganze Zeit investierst ansonsten bin ich dir noch einen Kaffee schuldig. :-) Danke nochmal und Gruß hellemon Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 15. November 2005 Melden Teilen Geschrieben 15. November 2005 Hallo hellemon, ist die Reihenfolge der Einträge wichtig ? Wenn nein dann probiere es mit type test.cfg | find /V "server=">test.tmp type servername.txt>>test.tmp copy test.tmp test.cfg /y del test.tmp thorgood Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 15. November 2005 Melden Teilen Geschrieben 15. November 2005 Hallo Hellemon, letztlich läuft es auf Neuanlegen, Löschen, Umbenennen hinaus. Ich habe heute und morgen (Di, Mi) keine Zeit, mich um fremde Dinge zu kümmern, kann dir im Moment leider nicht weiterhelfen. Gruß Edgar Zitieren Link zu diesem Kommentar
hellemon 10 Geschrieben 15. November 2005 Autor Melden Teilen Geschrieben 15. November 2005 Hallo liebe Leut, nochmals vielen Dank für die Zahlreichen Tipps aber ich habe es Endlich gelöst. Muss schon sagen, es ist echt schwierigt etwas zu realisieren wenn man kaum Programmieren kann. Aber man lernt nie aus. :-) @lefg hat mich auf den richtigen Weg gebracht. Er hatte den richtigen Ansatz nur habe ich es am Anfang nicht verstanden was er wollte. Hier meine Lösung zum Problem. Funktioniert einwandfrei mit AutoIT. Was wird am Ende damit erreicht - Es wird Zeile für Zeile aus der bestehenden Datei ausgelesen und in eine neue Datei geschrieben. Danach kommt eine While Schleife die bei einem Bestimmten Wort (Server=) eine bestimmte Aktion ausführt - in meinen Beispiel den neuen Servername aus der einen Textdatei ausliest und in die neue Datei einfügt. Danach wir die Orginal Datei gelöscht und die neu erstellte Datei umbennant. Und somit habe ich das erreicht was ich haben wollte. Vielen dank nochmal..... ; Neuen Server holen und in Variable $newserver speichern $fileserver = FileOpen("server.txt",0) ; Überprüft ob die server.txt geöffnet werden kann If $fileserver = -1 Then MsgBox(0, "Fehler", "Kann server.txt nicht öffnen.") Exit EndIf $newserver = FileReadLine($fileserver) FileClose($fileserver) $file = FileOpen("wcontrol.cfg", 0) ; Überprüft ob die wcontrol.cfg geöffnet werden kann If $file = -1 Then MsgBox(0, "Fehler", "Kann wcontrol.cfg nicht öffnen.") Exit EndIf ; Legt neue Datei wcontrol.new an $filenew = fileOpen("wcontrol.new", 2) ; Überprüft ob die wcontrol.new geöffnet werden kann If $filenew = -1 Then MsgBox(0, "Fehler", "Kann wcontrol.new nicht öffnen.") Exit EndIf ; Neue Datei wcontrol.new schreiben While 1 $line = FileReadLine($file) If @error = -1 Then ExitLoop If StringLeft($line,6)="Server" Then $line="Server=" & $newserver EndIf $result=FileWriteLine($filenew, $line) if $result=0 then MsgBox(0, "Fehler", "Kann wcontrol.new nicht schreiben.") FileClose($file) FileClose($filenew) FileDelete("wcontrol.new") Exit EndIf Wend FileClose($file) FileClose($filenew) ; Der Schreibschutz von der datei wcontrol.cfg wird empfernt FileSetAttrib("wcontrol.cfg", "-R", 0) If @error Then MsgBox(4096,"Fehler", "Schreibschutz von der wcontrol.cfg kann nicht empfernen werden.") Exit EndIf FileMove("wcontrol.new", "wcontrol.cfg",1) Das ganze in eine EXE Datei Compilieren - Fertig Jetzt kann man das ganze via Batchjob speichern wohin man will und kann mehrere Clients auf einmal bearbeiten. Und muss nur noch die Textdatei ab ändern. Gruß und bis zum nächsten mal Helmut Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 16. November 2005 Melden Teilen Geschrieben 16. November 2005 Vielen dank nochmal..... Hallo Helmut, gern geschehen. Normalerweise kommentiere ich den Entwicklungsgang. Das entfiel diesmal aus Zeitknappheit. Mit AutoIT ist das auch eine schöne Lösung und du hast ein wenig Programmieren erlernt. Gruß Edgar Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.