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.
Please also mark the comments that contributed to the solution of the article
Kommentar vom Moderator Dani am Apr 23, 2016 um 17:22:50 Uhr
Formatierungen hinzugefügt...
Content-Key: 302676
Url: https://administrator.de/contentid/302676
Printed on: April 24, 2024 at 23:04 o'clock
2 Comments
Latest comment
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