tunderefx
Goto Top

CSV mit for -f auswerten

Hallo Leute,

die Frage ist sicherlich schon X mal da gewesen.
Da ich aber mit Programiersprachen nix am Hut habe bin ich auf eure Hilfe angewiesen.
Vielen Dank im Voraus

Ich habe eine csv Datei mit vollgenden Inhalt unter c:\test\test1.csv

Inhalt:
Erklärung -> Vorname;Name;ADDirectory;AC;AD;FO

Andreas;Meier;ameier;-;x;x;
Thomas;Huber;thuber;-;x;-;
Michael;Birau;mbirau;-;-;x;

Ich benötige jeden einzelnen Wert pro Spalte.
Also
Andreas
Meier
usw.

Ich habe mal so angefangen

For /F "tokens=1-6 usebackq delims=; " %%i in (c:\test\test1.csv) do @(
@set name=%%i
@set nachname=%%j
@set adname=%%k
@set ac=%%l
@set ad=%%m
@set fo=%%n )

ABER es wird so nicht jede einzelne Spalte aufgelöst sonder nur immer die Letzte, in diesem Fall -> Michael;Birau;mbirau;-;-;x;
Ich benötige aber jede nacheinander !?

Hat einer ein Idee ??

mfg
Stefan

Content-Key: 175284

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

Ausgedruckt am: 29.03.2024 um 12:03 Uhr

Mitglied: 86263
86263 25.10.2011 um 22:34:55 Uhr
Goto Top
Moin Stefan,

wann prüfst du denn, was in der Variablen steht?
Nach der For-Schleife?
Dann ist logischerweise nur noch der letzte Wert gespeichert, da mit jedem Schleifendurchlauf der bisherige Variablenwert überschrieben wird.


Gruß,
DB
Mitglied: TunderEfx
TunderEfx 25.10.2011 um 22:45:19 Uhr
Goto Top
Hi DB,

hmm stimmt eigentlich o face-smile
aber du hasch hier jemand vor dir der mit batch eigntlich nix macht ;)
geht des mit for /f noch anderst ??
Mitglied: bastla
bastla 25.10.2011 um 22:47:05 Uhr
Goto Top
Hallo TunderEfx und willkommen im Forum!

Die Frage ist doch eigentlich, was Du mit den Werten vorhast - das Zuweisen zu eigenen Variablen ist zumeist nicht nötig (Du hast ja ohnehin schon die Inhalte in den Schleifen-Variablen) ...

Grüße
bastla
Mitglied: 86263
86263 25.10.2011 um 22:50:11 Uhr
Goto Top
[OT]
@bastla
wollte ich gerade auch schreiben face-wink
[/OT]

Gruß,
DB
Mitglied: TunderEfx
TunderEfx 26.10.2011 um 13:19:15 Uhr
Goto Top
Hi DB & Bastla,

ich möchte die Werte aus dem CSV mit dsadd im Active Directory weiterverarbeiten

dsadd user ...
dsadd group ...

also User erstellen und Gruppe(n) zuordnen.
(AC,AD,FO stehen für Gruppen im CSV)

Deswegen brauch ich aus jeder Spalte die Werte und das dann Stück für Stück bis das CSV abgearbeitet ist.

mfg
Stefan
Mitglied: bastla
bastla 26.10.2011 um 17:18:27 Uhr
Goto Top
Hallo TunderEfx!
Deswegen brauch ich aus jeder Spalte die Werte und das dann Stück für Stück bis das CSV abgearbeitet ist.
... und genau das hast Du anhand der Schleifenvariablen - als Demo:
For /F "tokens=1-6 usebackq delims=; " %%i in ("c:\test\test1.csv") do (  
    echo dsadd user CN=%%k,CN=Users,DC=Widgets,DC=Contoso,DC=Com -samid %%k -fn "%%i" -ln "%%j"  
)
Grüße
bastla
Mitglied: TunderEfx
TunderEfx 26.10.2011 um 17:27:15 Uhr
Goto Top
Danke Bastla,

des GEHHTTTT !!!!!!!

Danke schön face-smile
Mitglied: TunderEfx
TunderEfx 26.10.2011 um 17:29:29 Uhr
Goto Top
genau in die richtung soll es gehen, haben hier immer listen mit ca. 50-80 user
die mit der hand erstellen, da wirste irre mit der zeit.
Mitglied: 60730
60730 26.10.2011 um 17:47:05 Uhr
Goto Top
moin,

du weißt aber schon, dass der symbadische Marktführer mithilfe seiner Haarfarbe nicht näher beschriebenen Praktikanten da so ein tolles Tool namens
CSVDE zusammengebraten hat, das haarfarbe unbestimmt genau für diesen jenen Zweck gedacht ist?

Frag ja nur...
Mitglied: TunderEfx
TunderEfx 07.11.2011 um 09:57:16 Uhr
Goto Top
hi, leider nein abe ich sehe mal nach
Mitglied: TunderEfx
TunderEfx 07.11.2011 um 10:07:31 Uhr
Goto Top
ja hilft mir leider nicht ganz, aber danke für den tip
Mitglied: TunderEfx
TunderEfx 07.11.2011 um 10:41:30 Uhr
Goto Top
Hi Bastla,

eine Frage hab ich noch.
Ich bekomme unten in den Spalten AC, AD,BO usw. entwerder einen - oder ein x (X) zurück.
Mit dsmod group Ordne ich die User in die Domänen Lokalen Gruppen zu.

Hab mir dann gedacht machste es mit if %%g== - oder x.
Wenn ein - kommt soll er zum nächsten weitergehen in dem Fall :H

Aber nach dem :H steht in %%h kein Wert mehr !?

REM Username;Vorname;Name;Passwort;PC Name;Master OU;AC;AD;BO;BQ;FB;FO;HK;HR;KI;MGMT;PU;RV;SA;TC;
REM a b c d e f g h i j k l m n o p q r s t
For /F "tokens=1-20 usebackq delims=; " %%a in ("%UserList%") do (

if %%g==- goto H
if %%g==x set AC=Accounting
if %%g==X set AC=Accounting
dsmod group CN=DomänenDL_%AC%,OU=%AC%,OU=Users,DC=Widgets,DC=Contoso,DC=Com -addmbr CN=%%a,OU=%AC%,OU=Users,DC=Widgets,DC=Contoso,DC=Com"


:H
if %%h==- goto I
if %%h==x set AD=Administration
if %%h==X set AD=Administration
dsmod group CN=ContosoDL_%AD%,OU=%AD%,OU=Users,DC=Widgets,DC=Contoso,DC=Com -addmbr CN=%%a,OU=%AD%,OU=Users,DC=Widgets,DC=Contoso,DC=Com"


:I
usw. .........
)
Mitglied: bastla
bastla 07.11.2011 um 12:32:43 Uhr
Goto Top
Hallo TunderEfx!

Wenn nur bei "x" oder "X" das Hinzufügen zur Gruppe erfolgen soll, genügt doch (ganz ohne Sprung):
if /i "%%g"=="x" dsmod group CN=DomänenDL_Accounting,OU=Accounting,OU=Users,DC=Widgets,DC=Contoso,DC=Com -addmbr CN=%%a,OU=Accounting,OU=Users,DC=Widgets,DC=Contoso,DC=Com"
oder, wenn Du weiterhin die Variablen verwenden möchtest, zB
set "AC="  
if /i "%%g"=="x" set "AC=Accounting"  
if defined AC dsmod group CN=DomänenDL_%AC%,OU=%AC%,OU=Users,DC=Widgets,DC=Contoso,DC=Com -addmbr CN=%%a,OU=%AC%,OU=Users,DC=Widgets,DC=Contoso,DC=Com"  

set "AD="  
...
Grüße
bastla