baruse
Goto Top

Variablen aus ini an Batchdateien übergeben

Hallo zusammen,

ich übegebe momentan die benötigten Variablen (hauptsächlich Pfade) am Anfang der Batchdatei.

Bsp.
set war=wartung
set soft=software
usw.

Nun brauche ich aber mittlerweile diese Variablen in mehreren Batchdateien und muß im Falle einer Änderung auch jede betroffene Batchdatei editieren.
Gibt es eine Möglichkeit, dies aus einer einzigen Datei (ini?) auszulesen?
Ich habe bis jetzt in der Suche leider nur Beiträge gefunden, wo auf eine einzelne Zeile in der ini gesprungen wird.

Vielen Dank schonmal
Jörg

Content-Key: 57207

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

Printed on: April 23, 2024 at 20:04 o'clock

Member: Biber
Biber May 12, 2007 at 10:53:06 (UTC)
Goto Top
Moin Baruse,

siehe zum Beispiel bastlas Lösung im ersten Beitrag unten in der Liste unter "Verwandte Beiträge" Wert aus ini File einer Variable übergeben.

Gruss
Biber
Member: Baruse
Baruse May 12, 2007 at 10:58:55 (UTC)
Goto Top
Hm,

den Beitrag hatte ich schon gelesen, aber hier verweist er doch auch nur auf eine einzelne Zeile in der ini - nämlich auf "Memory"
ich will jedoch in den Batches nur eine einzige Zeile haben, in der die komplette ini eingelesen wird.

Sorry wenn ich mich vielleicht etwas blöd anstelle...
Jörg
Member: Connor1980
Connor1980 May 12, 2007 at 11:28:50 (UTC)
Goto Top
ich mache s folgendermassen: schreibe die variablen in eine separate batchdatei (z.b. variablen.cmd) und rufe diese mit "call PFAD\variablen.cmd" dann in der jeweiligen batchdatei auf.
EDIT: Sorry, habe nich so genau gelesen, es geht ja um ini-dateien. ob das damit auch geht, keine ahnung, habe ich noch nicht probiert ;)
Member: Biber
Biber May 12, 2007 at 11:47:35 (UTC)
Goto Top
Moin baruse,

entweder Du machst es gezielt mit Find/Findstr, wie vom bastla skizziert, auf einzelne Zeilen bezogen
for /f "tokens=2 delims==" %%i in ('findstr "Memory=" C:\Temp\install.ini') do set myMemory=%%i  
Wenn denn in der Ini mit dem Aufbau "Key=value" auch ein Key namens "Memory" existiert, hast Du dann das Value nach dem Gleichheitszeichen in der Variable %MyMemory%.

- oder-
Du rufst wie von Connor1980 vorgeschlagen eine zweite .bat-Datei mit "Call mySettings.bat" auf, in der steht:
::MySettings.bat
@echo off
Set war=wartung
Set wir=wirtung
...

Variante 2 setzt dann halt immer ALLE Variablen global - wenn irgendein anderes Programm gleichnamige Variablen gesetzt hätte, würden die blind überbügelt werden.
Da solltest Du also nicht so allgemeine Variablennamen wie %username% oder %path% verwenden, sonst hast Du Seiteneffekte.
Also besser:
::MySettings.bat
@echo off
Set mySet_war=wartung
Set mySet_wir=wirtung
...

Funktionieren wird beides
gruss
Biber
Member: Baruse
Baruse May 12, 2007 at 11:49:43 (UTC)
Goto Top
Hallo Connor1980,

vielen Dank - genauso klappt's natürlich auch;
muß ja keine ini sein;
auf das Einfachste kommt man meistens nicht.

Viele Grüße
Jörg
Member: Baruse
Baruse May 12, 2007 at 12:06:37 (UTC)
Goto Top
Hallo Biber,

die Idee mit den my_... gefällt mir gut;
werd ich gleich in die Tat umsetzen.

Danke Euch Beiden für die schnelle Hilfe!

Jörg