Inhalt einer txt auslesen und bei übereinstimmung Zeilen aus andered Datei einfügen
Hallo @all
ich hätte da ein kleines Problemchen--->
also ich hab da eine Datei in der ein Wert (z.b. [profil=0]) steht. Danach stehen noch ein paar andere Werte. Ich möchte danach noch weitere einträge einfügen. Das klappt schon.
Nun das echte Problem. Ich habe 2 unterschiedliche Einträge zu machen, je nach dem in welcher reihenfolge der user sich die Dateien installiert.
[profil=0]
zeile1
zeile2
zeile3
dann soll sich der user ein programm installieren und in der Hauptdatei soll ein wert eingtragen werden wie folgt:
[profil=1]
zeile1
zeile2
zeile3
dann gibt es weitere programme die installiert werden können. Leider muss der Wert [profil] IMMER im Format
[profil=0]
...
[profil=1]
...
[profil=2]
...
vorliegen.
Was muss ich machen, um den schon installierten passus " [profil=*] auszulesen und bei weiteren installationen im richtigen format in der Datei zu hinterlegen??
Vielen Dank für eure Hilfe
ich hätte da ein kleines Problemchen--->
also ich hab da eine Datei in der ein Wert (z.b. [profil=0]) steht. Danach stehen noch ein paar andere Werte. Ich möchte danach noch weitere einträge einfügen. Das klappt schon.
Nun das echte Problem. Ich habe 2 unterschiedliche Einträge zu machen, je nach dem in welcher reihenfolge der user sich die Dateien installiert.
Hauptdatei <<<
[profil=0]
zeile1
zeile2
zeile3
dann soll sich der user ein programm installieren und in der Hauptdatei soll ein wert eingtragen werden wie folgt:
[profil=1]
zeile1
zeile2
zeile3
dann gibt es weitere programme die installiert werden können. Leider muss der Wert [profil] IMMER im Format
[profil=0]
...
[profil=1]
...
[profil=2]
...
vorliegen.
Was muss ich machen, um den schon installierten passus " [profil=*] auszulesen und bei weiteren installationen im richtigen format in der Datei zu hinterlegen??
Vielen Dank für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 05.04.2010 um 21:55:21 Uhr
Zwei klar vor- und ausgezeichnete Lösungsansätze - Beitrag auf "Beantwortet" gesetzt.
Content-ID: 139781
Url: https://administrator.de/contentid/139781
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo connecthor!
Ließe sich Deine Problemstellung auf "Finde die niedrigste noch nicht in '[profil=Zahl]' enthaltene Zahl!" reduzieren?
In diesem Fall etwa so:
Grüße
bastla
Ließe sich Deine Problemstellung auf "Finde die niedrigste noch nicht in '[profil=Zahl]' enthaltene Zahl!" reduzieren?
In diesem Fall etwa so:
@echo off & setlocal
set "Datei=D:\Die.ini"
set /a Nr=0
:Loop
findstr /i /l "[profil=%Nr%]" "%Datei%">nul || goto :Found
set /a Nr+=1
goto :Loop
:Found
set "Wert=[profil=%Nr%]"
echo %Wert%
bastla
Hallo Bastla,
mit nur einem findstr und Vergleich der Nr dürfte das doch effizienter sein.
(auch wenn das in diesem Fall egal ist)
Gruß
LotPings
Edit: Anregung von Bastla eingearbeitet
mit nur einem findstr und Vergleich der Nr dürfte das doch effizienter sein.
(auch wenn das in diesem Fall egal ist)
@echo off & setlocal EnableDelayedExpansion
set "Datei=c:\Test\2010-04\Die.ini"
Set Nr=0
For /f "tokens=2 delims=[=]" %%A in (
'findstr /i /l "[profil=" "%Datei%"'
) Do If %%A GTR !Nr! Set Nr=%%A
set /a Nr+=1
set "Wert=[profil=%Nr%]"
echo %Wert%
Gruß
LotPings
Edit: Anregung von Bastla eingearbeitet
Hallo LotPings!
Gute Idee , handwerklich fehlt allerdings "delayedExpansion" - es wird dadurch in der aktuellen Fassung immer "
Eine Abwandlung davon - nämlich tatsächlich die ".ini" vorweg zu sortieren - würde aber daran scheitern, dass die Nummern keine feste Stellenanzahl haben.
Grüße
bastla
Gute Idee , handwerklich fehlt allerdings "delayedExpansion" - es wird dadurch in der aktuellen Fassung immer "
GTR 0
" verglichen, was auch gut geht, wenn die Nummern innerhalb der ".ini"-Datei brav aufsteigend verwendet wurden; dann allerdings wäre der Vergleich überhaupt unnötig, und es müsste einfach die letzte vorkommende Nummer um 1 erhöht werden.Eine Abwandlung davon - nämlich tatsächlich die ".ini" vorweg zu sortieren - würde aber daran scheitern, dass die Nummern keine feste Stellenanzahl haben.
Grüße
bastla
Du hast ja sowas von Recht
Danke, habe es schon geändert
Ostergrüße
LotPings
Zitat von @connecthor:
ich habs jetzt... BASTLA hatte die beste (einzige lösung)
LotPings lösung war noch nicht ganz vollständig... es wurde das [profil=x] nicht um eins erhöht.
ich habs jetzt... BASTLA hatte die beste (einzige lösung)
LotPings lösung war noch nicht ganz vollständig... es wurde das [profil=x] nicht um eins erhöht.
Protest,
entsprechend deinen Vorgaben funktioniert das hier.
Hast du den letzten Stand berücksichtigt?
Zeile 7 erhöht die höchste gefundene Profil Nr um eins.
Damit meine Variante auch bei leerer Datei funktioniert, könnte man noch Zeile 3 ändern in:
Set Nr=-1
Gruß
LotPings
Ja, ich habs nochmal getestet.
Einzige Änderung in Zeile 3 auf -1, (Der alte Beitrag lässt sich mehr editieren).
Ich vermute mal einen Übertragungsfehler - bitte "in den Speicher kopieren" oder Quelltext ansehen+kopieren.
Computer sind ja so schrecklich konsequent - tun genau das und nur das, was ihnen vorgegeben wird.
Gruß
LotPings
Einzige Änderung in Zeile 3 auf -1, (Der alte Beitrag lässt sich mehr editieren).
Ich vermute mal einen Übertragungsfehler - bitte "in den Speicher kopieren" oder Quelltext ansehen+kopieren.
Computer sind ja so schrecklich konsequent - tun genau das und nur das, was ihnen vorgegeben wird.
Gruß
LotPings
Moin moin,
nein Zeile 4-6 ist eine Schleife die alle gefundenen "[profil="-Zeilem mit dem vorherigen Maximalwert vergleicht und ihn ggfs ersetzt.
Man kann diese 3 Zeilen auch ohne Änderung der Funktion hinereinander in eine Zeile schreiben, ich finde es so halt übersichtlicher.
Gruß
LotPings
nein Zeile 4-6 ist eine Schleife die alle gefundenen "[profil="-Zeilem mit dem vorherigen Maximalwert vergleicht und ihn ggfs ersetzt.
Man kann diese 3 Zeilen auch ohne Änderung der Funktion hinereinander in eine Zeile schreiben, ich finde es so halt übersichtlicher.
Gruß
LotPings