munsi1
Goto Top

bestimmte Zeile in einer Datei ändern

Hallo,

ich möchte eine ini Datei automatisch per batch ändern. Folgender Hintergrund, in unserer Firma gibt es mehrer Rechner mit einem speziellen Programm. Dieses Programm benötig eine ini Datei in der der Rechnername an einer bestimmten Stelle steht. Jetzt muß die ini Datei aber angepasst werden und ich möchte per batch den Namen aus der alten Datei auslesen und in die neue ini Datei schreiben. Leider komme ich nicht so wirklich weiter. Der Rechnername wird immer nur an das Ende der Datei geschrieben.
@echo on & setlocal
set "Ein=C:\Programme\Programm\netz.ini.bak"  
set "Aus=C:\Programme\Programm\netz.ini"  

rem if exist "%Aus%" del "%Aus%"  
set Zuletzt=-
for /f "tokens=*" %%i in ('findstr "Datasource" "%Ein%"') do call :ProcessLink "%%~i"  
goto :eof

:ProcessLink
if %1==%Zuletzt% goto :eof
set Zuletzt="%~1"  
(echo %~1)>>"%Aus%"  
Es soll die Zeile Datasource=Rechnername geändert werde. Vielleicht hat einer von euch eine Idee wie ich das realisieren kann.
Vielen Dank.

Grüße
Sebastian

Content-Key: 74331

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

Printed on: April 19, 2024 at 06:04 o'clock

Member: bastla
bastla Nov 23, 2007 at 14:55:52 (UTC)
Goto Top
Hallo Munsi1 und willkommen im Forum!

Für "Ersetz"-Operationen ist Batch nicht wirklich das optimale Werkzeug - besser geeignet wären Tools wie zB "sed" oder zumindest ein VBScript, etwa:
Const Source = "C:\Programme\Programm\netz.ini.bak"  
Const Target = "C:\Programme\Programm\netz.ini"  
Const Key = "Datasource"  
'Rechnernamen als neuen Wert festlegen  
Value = WScript.CreateObject("WScript.Network").Computername  

Set fso = CreateObject("Scripting.FileSystemObject")  
Text = Split(fso.OpenTextFile(Source, 1).ReadAll, vbCrLF)
Anzahl = UBound(Text)
L = Len(Key)
For i = 0 To Anzahl
	If Left(Text(i), L) = Key Then
		Text(i) = Key & "=" & Value  
		Exit For
	End If
Next
fso.OpenTextFile(Target, 2, True).Write Join(Text, vbCrLF)

Grüße
bastla

[Edit] Variable "Value" für neu einzutragenden Wert hinzugefügt. [/Edit]
Member: Munsi1
Munsi1 Nov 23, 2007 at 18:21:49 (UTC)
Goto Top
Hallo bastla,

danke für den Tip aber es muß ohne Tools gehen denn die Anwender haben nur einen Standartrechner. Mit VBScript kenne ich mich nicht so aus. Werde am Montag mal dein Script probieren da ich zuhause leider die Datei nicht habe (habe sie in der Firma vergessen face-sad )
Melde mich am Montag wieder.

Danke noch mal und schönes Wochenende
Sebastian
Member: Munsi1
Munsi1 Nov 26, 2007 at 11:32:39 (UTC)
Goto Top
Hallo bastla,

so habe es jetzt ausprobiert. Damit geht es super.
Danke

Sebastian