[Batch] Linie anpassen, restlicher Text ignorieren

GuardianAngel93

Lieutenant
Registriert
Nov. 2010
Beiträge
806
Hallo Zusammen

Für unsere Kunden muss ich ein *.ini File anpassen.
Hierbei haben die in dieser *.ini verschiedene Parameter gesetzt wie Bsp: Ihre Adresse, diverse Einstellungen etc.

Da aufgrund eines MS Patches nun die XML Darstellung verändert wurde, muss ich eine Linie anpassen.
Das Problem hierbei ist, diese Linie wird bei allen Leer sein, es muss aber genau Linie 15 sein, da das Programm dies sonst ignoriert. Also Lösung einfach als Ergänzung reinzuschreiben fällt weg.

Hat jemand eine Idee, wie ich dies verpacken kann das es in etwa wie so wird?

Linie 1-14: blablabla Text wird ignoriert
Linie 15: Variable wird gesetzt, falls eine Vorhanden überschrieben
Linie 16-x: blablabla Text wird ignoriert

Das ganze muss automatisiert sein, dass die Kunden nur noch den Batch abdrücken müssen und anschliessend wie gewohnt das MS Patch installieren können.

Ich bin über alle Lösungsansätze Dankbar.

PS: Leider kann ich nicht alle *.ini Files anfordern, es sind zwar nur ca. 16 Kunden betroffen, jedoch auf jedem PC was dann schnell mal paar Tausend *.ini Files sind.

Grüsse
 
Könnte ein Snipplet in Powershell anbieten falls gewünscht. Batch ist mMn bei sowas eine Quälerei.

Generell vom vorgehen:
1. Alte INI einlesen
2. Zeile 1-14 in eine neue INI schreiben
3. Zeile 15 mit neuem Text, nach Prüfung, in neue INI schreiben
4. Restliche Zeilen in neue INI schreiben
5. alte INI umbenennen (z.b. von datei.ini in datei.ini.old)
6. neue INI umbenennen (z.b. neu.ini in datei.ini)
7. Profit!

Edit:
Ansonsten kann man auch die Zeile per Regex ersetzen link
 
Zuletzt bearbeitet:
Ich Denke mit Batch klappt das nicht, wie wäre es mit VBS?

Nur der Dateiname muss noch als Variable übergeben werden.

Code:
FileName = "E:\test.ini"
FileNameSave = FileName & ".sav"

Set objFSO = CreateObject("Scripting.FileSystemObject") 
 
i = 0
Set objTextFile = objFSO.OpenTextFile(FileName, 1) 
Set objFile = objFSO.OpenTextFile(FileNameSave, 2, true)
Do Until objTextFile.AtEndOfStream 
	i = i + 1
	if i = 15 then
        	objFile.WriteLine "neuer Wert"
		objTextFile.Readline
	else
		objFile.WriteLine objTextFile.Readline 
	end if 
Loop 
objTextFile.Close
objFile.Close
objFSO.deleteFile(FileName)
objFSO.MoveFile FileNameSave, FileName

Set objTextFile = nothing
Set objFile = nothing
Set objFSO = nothing
 
Hey Zusammen

Besten Dank für die Vorschläge.

Wir werden wie folgt vorgehen:
Die Kunden liefern die Entsprechende Datei uns nun an.
Wir ändern diese ab (vorzugsweise mit dem VBS - Besten Dank hierfür!)
Anschliessend liefern wir die Datei den Kunden wieder aus mit einem Copy Job für all Ihre Clients.

Liebe Grüsse
 
Zurück
Oben