INI Datei via Batch auslesen, verändern und nur einen Teil übernehmen in neue Datei
Hallo Brauch mal Hilfe , hab schon einiges hier gefunden aber nichts klappt wie ich es genau möchte.
folgendes:
Ich habe eine ini Datei die ich Auslesen möchte und einen Wert verändern mag aber nur einen Teil in die Neu "ini" übernehmen möchte.
So sieht sie aus:
Nun möchte ich nur das hier übernehmen:
Und denn Namen von "name=05_Test" zb in "name=02_Test" ändern.
Für zweites hatte ich schon ein CMD Scrip das Super läuft:
Nun Fehlt mir noch wie ich die 2 ersten Datensätze:
nicht mit Übernehme sondern nur den Letzen:
Nun möchte ich nur das hier übernehmen:
Am besten wäre eins das nach letzen Eintrag in [ ] sucht und ab da kopiert. das ist immer der Aktuellst.
Beim Inhalt von [ ] handelt es sich um die Mac Adresse des Bluetooth Dongle.
Vielen Dank euch allen im Voraus.
folgendes:
Ich habe eine ini Datei die ich Auslesen möchte und einen Wert verändern mag aber nur einen Teil in die Neu "ini" übernehmen möchte.
So sieht sie aus:
[0D:71:DA:7D:1A:00]
name=pc1-DE
sec_mode=2
pin_code=
discovery_mode=13
dev_class=0x00120104
[0A:71:DA:7D:1A:00]
discovery_mode=13
sec_mode=2
dev_class=0x00120104
name=pcharald-DE
[05:71:DA:7D:1A:00]
discovery_mode=13
sec_mode=2
dev_class=0x00120104
name=01_Test
Nun möchte ich nur das hier übernehmen:
[05:71:DA:7D:1A:00]
discovery_mode=13
sec_mode=2
dev_class=0x00120104
name=05_Test
Und denn Namen von "name=05_Test" zb in "name=02_Test" ändern.
Für zweites hatte ich schon ein CMD Scrip das Super läuft:
@echo on & setlocal enabledelayedexpansion
setlocal
echo Bitte vollstaendigen Dateipfad angeben:
set Datei=D:\btl.INI
echo Welchen String ersetzen?
set Von=05_Test
echo Durch welchen String ersetzen?
set Nach=02_Test
set "t=D:\LOCALDEVICE.INI"
rem Temp-Datei definitiv neu
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set "Line=!Line:%Von%=%Nach%!" & >>"%t%" echo !Line!
exit
Nun Fehlt mir noch wie ich die 2 ersten Datensätze:
[0D:71:DA:7D:1A:00]
name=pc1-DE
sec_mode=2
pin_code=
discovery_mode=13
dev_class=0x00120104
[0A:71:DA:7D:1A:00]
discovery_mode=13
sec_mode=2
dev_class=0x00120104
name=pcharald-DE
nicht mit Übernehme sondern nur den Letzen:
Nun möchte ich nur das hier übernehmen:
[05:71:DA:7D:1A:00]
discovery_mode=13
sec_mode=2
dev_class=0x00120104
name=02_Test
Am besten wäre eins das nach letzen Eintrag in [ ] sucht und ab da kopiert. das ist immer der Aktuellst.
Beim Inhalt von [ ] handelt es sich um die Mac Adresse des Bluetooth Dongle.
Vielen Dank euch allen im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Dani am 23.04.2016 um 19:22:50 Uhr
Formatierungen hinzugefügt...
Content-Key: 302676
Url: https://administrator.de/contentid/302676
Ausgedruckt am: 19.03.2024 um 05:03 Uhr
2 Kommentare
Neuester Kommentar
Hallo Novaly,
so etwa könnte das aussehen:
Grüße
rubberman
so etwa könnte das aussehen:
@echo off &setlocal
set "infile=test.ini"
set "outfile=test2.ini"
set "searchname=name"
set "newvalue=02_Test"
for /f "delims=:" %%i in ('type "%infile%"^|findstr /nrc:"\[..*\]"') do set /a "lastsection=%%i"
setlocal EnableDelayedExpansion
<"!infile!" >"!outfile!" (
for /f %%i in ('type "!infile!"^|find /c /v ""') do (
for /l %%j in (2 1 !lastsection!) do set /p "="
for /l %%j in (!lastsection! 1 %%i) do (
set "line=" &set /p "line="
for /f "tokens=1* delims==" %%k in ("!line!") do if /i "%%k"=="!searchname!" (
echo(%%k=!newvalue!
) else (
echo(!line!
)
)
)
)
rubberman