42687
Goto Top

Liste auslesen und als Variable setzen

Hallo, ich möchte folgende Datei ("\\server\SNW\config.csv") auslesen:
Schule;Grundschule-Zug
Server1;\\server
Server;server
Domaene;GS-ZUG.local
domaene_dsadd;GS-Zug,dc;local
Pfad;\\server\SNW
lbasis;D:\SNW
Lehrer;Lehrer
Schueler;Schueler
Klassen;KLASSEN
cBasis;SNW
cLehrer;Lehrer
cSchueler;Schueler
gadmin;Admins
guseradmin;useradmin
glehrer;lehrer
gschueler;schueler

Wobei immer das was vor dem ; steht der Variablenname sein soll und das was dahinter steht, der Variablenwert.

Bsp. set "schule=Grundschule-Zug"

Wie lese ich diese Datei möglichst einfach aus?

Danke.

Peter

Content-Key: 121314

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

Printed on: April 24, 2024 at 12:04 o'clock

Member: bastla
bastla Jul 25, 2009 at 13:21:58 (UTC)
Goto Top
Hallo Peter161!

Etwa so:
@echo off & setlocal
for /f "usebackq tokens=1* delims=;" %%i in ("\\server\SNW\config.csv") do set "%%i=%%j"  
Grüße
bastla
Mitglied: 42687
42687 Jul 26, 2009 at 10:26:50 (UTC)
Goto Top
Hallo Bastla,

erstmal danke.

Leider kommt es zu folgender Meldung:
C:\Dokumente und Einstellungen\Willi>@echo off & setlocal
for /f "usebackq tokens=1* delims=;" %%i in ("C:\config.csv") do set "%%i=%%j"  
"%%i" ist syntaktisch an dieser Stelle nicht verarbeitbar.  

ist da was falsch?

danke. pete
Member: bastla
bastla Jul 26, 2009 at 11:24:05 (UTC)
Goto Top
Hallo Peter161!
ist da was falsch?
Die beiden Zeilen sollten ein Batch sein - wenn Du unmittelbar von der Kommandozeile testen willst, immer nur ein Prozentzeichen verwenden (war aber schon immer so) ...

Grüße
bastla
Mitglied: 42687
42687 Jul 26, 2009 at 11:25:37 (UTC)
Goto Top
Zitat von @bastla:
Hallo Peter161!
> ist da was falsch?
Die beiden Zeilen sollten ein Batch sein - wenn Du unmittelbar von
der Kommandozeile testen willst, immer nur ein Prozentzeichen
verwenden (war aber schon immer so) ...
wusste ich noch nicht

Grüße
bastla

danke, ich versuche es mal so
Mitglied: 42687
42687 Jul 26, 2009 at 11:32:30 (UTC)
Goto Top
Zitat von @42687:
> Zitat von @bastla:
> ----
> Hallo Peter161!
> > ist da was falsch?
> Die beiden Zeilen sollten ein Batch sein - wenn Du unmittelbar
von
> der Kommandozeile testen willst, immer nur ein Prozentzeichen
> verwenden (war aber schon immer so) ...
wusste ich noch nicht
>
> Grüße
> bastla

danke, ich versuche es mal so

ich hab es so versucht, danke.
habe es so angepasst:
@echo on & setlocal enabledelayedexpansion
for /f "usebackq tokens=1* delims==" %%i in ("C:\config.ini") do set "%%i=%%j"  

wenn ich aber nun echo %server% oder sowas schreib kommt %server% raus. dabei habe ich doch enabledelayedexpansion gemacht...?
Member: bastla
bastla Jul 26, 2009 at 11:38:54 (UTC)
Goto Top
Hallo Peter161!
wenn ich aber nun echo %server% oder sowas schreib kommt %server% raus. dabei habe ich doch enabledelayedexpansion gemacht...?
"delayedExpansion" ist in diesem Zusammenhang kein Thema (und daher auch nicht in meinem Vorschlag enthalten).

Wenn Du tatsächlich an der Kommandozeile testen willst, musst Du auch das "setlocal" weglassen - dieses hat ja genau den Zweck, die Variablen(inhalte) auf die Zeit während der Ausführung des Batches zu beschränken, sodass nach dem Ende des Batches (bzw nach einem expliziten "endlocal") die an den Variablen vorgenommenen Änderungen bzw die neu erstellten Variablen wieder "vergessen" werden; anders formuliert:

Wenn Du in den Batch eine Zeile 3
echo %server%
einfügst, wird auch
server
(der Variableninhalt - da gleichlautend mit dem Variablennamen nicht unbedingt das beste Beispiel face-wink) ausgegeben werden.

Grüße
bastla
Mitglied: 42687
42687 Jul 26, 2009 at 11:55:10 (UTC)
Goto Top
achso, danke nun ist alles gelöst- Vielleicht muss ich mich nochmal wegen wget melden oder dsadd spinnt zur zeit auch mal wieder, da kommt immer das der server ne referenzauswertung zurückgeben hat. bb