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

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

Mitglied: 86263
86263 Oct 25, 2011 at 20:34:55 (UTC)
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
Member: TunderEfx
TunderEfx Oct 25, 2011 at 20:45:19 (UTC)
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 ??
Member: bastla
bastla Oct 25, 2011 at 20:47:05 (UTC)
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 Oct 25, 2011 at 20:50:11 (UTC)
Goto Top
[OT]
@bastla
wollte ich gerade auch schreiben face-wink
[/OT]

Gruß,
DB
Member: TunderEfx
TunderEfx Oct 26, 2011 at 11:19:15 (UTC)
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
Member: bastla
bastla Oct 26, 2011 at 15:18:27 (UTC)
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
Member: TunderEfx
TunderEfx Oct 26, 2011 at 15:27:15 (UTC)
Goto Top
Danke Bastla,

des GEHHTTTT !!!!!!!

Danke schön face-smile
Member: TunderEfx
TunderEfx Oct 26, 2011 at 15:29:29 (UTC)
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 Oct 26, 2011 at 15:47:05 (UTC)
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...
Member: TunderEfx
TunderEfx Nov 07, 2011 at 08:57:16 (UTC)
Goto Top
hi, leider nein abe ich sehe mal nach
Member: TunderEfx
TunderEfx Nov 07, 2011 at 09:07:31 (UTC)
Goto Top
ja hilft mir leider nicht ganz, aber danke für den tip
Member: TunderEfx
TunderEfx Nov 07, 2011 at 09:41:30 (UTC)
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. .........
)
Member: bastla
bastla Nov 07, 2011 at 11:32:43 (UTC)
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