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.
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
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%"
Vielen Dank.
Grüße
Sebastian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 74331
Url: https://administrator.de/contentid/74331
Ausgedruckt am: 13.11.2024 um 06:11 Uhr
3 Kommentare
Neuester Kommentar
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:
Grüße
bastla
[Edit] Variable "Value" für neu einzutragenden Wert hinzugefügt. [/Edit]
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]