(batch) ini file verwaltung auslesen und ersetzen
moin,
ja ok, schon der 2te beitrag nacheinander...( statt nem dritten jez den ersten erweitert und den 2ten verändert xD)
thema wurde schon ein paar mal behandelt aber nicht ganz in dem sinne wie ich möchte oder ich hab es einfach noch nicht verstanden...
in einem ini file werden die werte gespeichert die mein prog bzw meine batch dann verwendet als variablen
zudem soll sie selbst eine datei anlegen an der sie bei wiederholter ausführung erkennt dass sie schon ausgeführt wurde und bestimmte variablen erkennt
jetzt das problem: diese variablen sollen auch im ini file verändert werden können...
beispiel:
dateien wurden per batch von cd auf die festplatte kopiert und der ort in eine datei im windows verzeichnis gespeichert.
später wird die batch wieder ausgeführt und sie soll nun erkennen dass sie schon dateien dorthin kopiert hat (sie Zb löschen können) anbieten neu zu kopieren, an einen anderen ort, und den wert des ortes im ini file ändern..
zudem soll das ini file ja ganz geordnet sein und nicht immer wieder ne variable hinten drangeschmissen werden mit echo bla=blabla >>inifile.ini
außerdem verstehe ich im for befehl die tokens nicht...
FOR /F "eol=; tokens=2,3* delims=, " %i in (Datei.txt) do @echo %i %j %k
danke cmd help ... aber sagen was tokens sind tust du trotzdem in der erklärung danach nicht...
tokens übersetzt = marken, also sowas wie anhaltspunkte... richitg? aber woran erkennt man die ? wodurch sind die definiert?
ich glaub dazu wäre es auch mal sehr gut wenn es ein tutorial geben würde...
könnten wir mal sammeln..?
FOR /F %%i in ('findstr /i "var" config.ini') do Set %%i
...
..
.
freu mich auf hilfe, Ph
ja ok, schon der 2te beitrag nacheinander...( statt nem dritten jez den ersten erweitert und den 2ten verändert xD)
thema wurde schon ein paar mal behandelt aber nicht ganz in dem sinne wie ich möchte oder ich hab es einfach noch nicht verstanden...
in einem ini file werden die werte gespeichert die mein prog bzw meine batch dann verwendet als variablen
zudem soll sie selbst eine datei anlegen an der sie bei wiederholter ausführung erkennt dass sie schon ausgeführt wurde und bestimmte variablen erkennt
jetzt das problem: diese variablen sollen auch im ini file verändert werden können...
beispiel:
dateien wurden per batch von cd auf die festplatte kopiert und der ort in eine datei im windows verzeichnis gespeichert.
später wird die batch wieder ausgeführt und sie soll nun erkennen dass sie schon dateien dorthin kopiert hat (sie Zb löschen können) anbieten neu zu kopieren, an einen anderen ort, und den wert des ortes im ini file ändern..
zudem soll das ini file ja ganz geordnet sein und nicht immer wieder ne variable hinten drangeschmissen werden mit echo bla=blabla >>inifile.ini
außerdem verstehe ich im for befehl die tokens nicht...
FOR /F "eol=; tokens=2,3* delims=, " %i in (Datei.txt) do @echo %i %j %k
danke cmd help ... aber sagen was tokens sind tust du trotzdem in der erklärung danach nicht...
tokens übersetzt = marken, also sowas wie anhaltspunkte... richitg? aber woran erkennt man die ? wodurch sind die definiert?
ich glaub dazu wäre es auch mal sehr gut wenn es ein tutorial geben würde...
könnten wir mal sammeln..?
FOR /F %%i in ('findstr /i "var" config.ini') do Set %%i
...
..
.
freu mich auf hilfe, Ph
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 49597
Url: https://administrator.de/forum/batch-ini-file-verwaltung-auslesen-und-ersetzen-49597.html
Ausgedruckt am: 23.12.2024 um 10:12 Uhr
6 Kommentare
Neuester Kommentar
also mal eins nach dem andern:
For /? liefert dir eine Hilfe. Mit delims "trennst" du eine Zeile in einzelne Teile(tokens) auf. Delims gibt dabei die Trennzeichen an. wilslt du dan nur das 3. und 4. tokken haben gibst du dies eben dann an.
Jetzt zum schreiben und auslesen des Speicherortes:
Du frägst ja den Ort irgentwie ab und hast ihn dan in einer Variablen wie z.B. %speicher% stehen. Die kannst du ja einfach in eine Datei schreiben mit echo %speicher%>>Datei.ini
Was willlst du da bei einem Eintrag ordnen?
Du kannst dan imem rwieder beim start kontrollieren ob diese Datei existier mit if exist %windir%\datei.ini
miniversum
For /? liefert dir eine Hilfe. Mit delims "trennst" du eine Zeile in einzelne Teile(tokens) auf. Delims gibt dabei die Trennzeichen an. wilslt du dan nur das 3. und 4. tokken haben gibst du dies eben dann an.
Jetzt zum schreiben und auslesen des Speicherortes:
Du frägst ja den Ort irgentwie ab und hast ihn dan in einer Variablen wie z.B. %speicher% stehen. Die kannst du ja einfach in eine Datei schreiben mit echo %speicher%>>Datei.ini
Was willlst du da bei einem Eintrag ordnen?
Du kannst dan imem rwieder beim start kontrollieren ob diese Datei existier mit if exist %windir%\datei.ini
miniversum
Genau da ssit der suchbegrif. Zeile ersetzen. hast du mal geschaut? hier im forum wurde schonmal was gepostet. Ist bischen umständlich.
Im prinzip must du die batch durchsuchen und rausfinden in welcher zeile das steht. Das bekommst du mit Find hin. Dan schreibst du alle zeilen bis zu der betreffenden in eine neue datei, danach dein geänderter wert un ddanach den teil nach deiner gesuchten zeile (geht mit Forschleife und skip=).
miniversum
Im prinzip must du die batch durchsuchen und rausfinden in welcher zeile das steht. Das bekommst du mit Find hin. Dan schreibst du alle zeilen bis zu der betreffenden in eine neue datei, danach dein geänderter wert un ddanach den teil nach deiner gesuchten zeile (geht mit Forschleife und skip=).
miniversum
Das sollte so funktionieren.
in der suche mit find un ddan über set zuweisen. das letzte gefundene wird dann weiter benutzt.
Was du auch machen könntest, ist aber gepfuscht, ist den wert in die erste zeile zu schreiben.
Dann kanst dus auch einfach einlesen wie gehabt.
Das neuschreiben beim verändern gestaltet sich einfacher weil du dann einfach über echo pfad=%variable%>NeueDatei.ini eine neue Datei anfangwn kannst und dann den rest der alten Datei mit einer Forschleife und skip=1 an die neue Datei dranhängen kannst.
miniversum
in der suche mit find un ddan über set zuweisen. das letzte gefundene wird dann weiter benutzt.
Was du auch machen könntest, ist aber gepfuscht, ist den wert in die erste zeile zu schreiben.
Dann kanst dus auch einfach einlesen wie gehabt.
Das neuschreiben beim verändern gestaltet sich einfacher weil du dann einfach über echo pfad=%variable%>NeueDatei.ini eine neue Datei anfangwn kannst und dann den rest der alten Datei mit einer Forschleife und skip=1 an die neue Datei dranhängen kannst.
miniversum