phlegma
Goto Top

(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

Content-Key: 49597

Url: https://administrator.de/contentid/49597

Printed on: April 26, 2024 at 14:04 o'clock

Member: Phlegma
Phlegma Jan 24, 2007 at 19:31:52 (UTC)
Goto Top
schön....
hey ich dachte ihr kennt euch so gut aus... (besonders @MOD face-smile )

ich hör dann auch auf komische fragen zu stellen und bastel ein tutorial...(über alles was ich bisher schon schönes gelernt hab...!!

aber bitte gebt mir die nötigen hinweise .. allein schaff ich das nicht... (nicht nur @ mod)

gruß, Ph
Member: miniversum
miniversum Jan 26, 2007 at 19:36:30 (UTC)
Goto Top
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
Member: Phlegma
Phlegma Jan 26, 2007 at 19:54:55 (UTC)
Goto Top
moin,
ah super jetzt versteh ich die tokens.. danke

nun was ich erreichen möchte ist im grunde das genaue ersetzen einer zeile im ini file,
also der dateispeicherort einer variable..
deshalb funktioniert dieses hintendranhängen nicht so gut.. sonst müsste man immer den letzen wert nehmen wenn er schon einmal in der datei stand und die datei würd immer länger und unordentlicher werden...

gibt es eine möglichkeit eine bestimmt zeile in einem dokument zu ersetzen?

nochmal und schonmal danke, Ph
Member: miniversum
miniversum Jan 27, 2007 at 10:52:38 (UTC)
Goto Top
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
Member: Phlegma
Phlegma Jan 27, 2007 at 12:22:02 (UTC)
Goto Top
hi,
ok.. also wird quasi die ganze datei eingelsen.. eine zeile verändert und dann die ganze datei neugeschrieben...
geht das gar nicht einfacher?
ich galub ich werds trotzdem hintendranklatschen xD
und dann einfach meinen befehl behalten, der dann doppelt ausgeführt wird und bei jedem der strings die variable setzt dh die erste (bzw ersten) überschreibt...

geht das? oder muss muss ich noch etwas an meinem for befehl ändern.. er sucht doch alle strings bla mit findstring "bla" oder nur den ersten?

danke, Ph
Member: miniversum
miniversum Jan 27, 2007 at 14:17:41 (UTC)
Goto Top
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