Jump to content

FOR Schleifenausgabe weiterverwenden


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

Hallo,

 

ich glaub das weiße eh keiner, aber ich probiers:

 

eine knifflige Frage zum Thema For schleifen in Batch's.

Hintergrund, ich habe eine Textdatei, in der stehen zB.

Gruppenname;Druckername;Netzlaufwerk;Netzlwbuchstabe;...

 

Ich möchte nun per Script, das Ergebnis von "ifmember /list" verwenden, also die ausgabe in welchen Gruppen der User mitglied ist, und dann Abhänig davon, ob in einer der Zeilen des Textfiles einer seiner Gruppennamen aufgeführt wird, zB. Netzlaufwerke und/oder Drucker verbinden.

 

Das ist manuell kein thema. Gescriptet aber schwer. Ich häng voll

 

Also ich bekomm es hin, die aktuellen Gruppen auszulesen und anzeigen zu lassen.

 

FOR /F "tokens=2 delims=\&." %%a IN ('%systemroot%\system32\ifmember.exe /list') DO (echo %%a)

 

So weit so gut, Die Gruppe wird nun brav angezeigt, zeile für Zeile.

Ich möchte aber jetzt weiterarbeiten und die ausgabe von %%a (nämlich die Gruppe) weiterverwenden um in einen weiteren IF Befehl anzugeben wenn "gruppe" gleich der "Name" in der Liste "mache".

 

Würde so aussehen:

FOR /F "tokens=2 delims=\&." %%a IN ('%systemroot%\system32\ifmember.exe /list') DO (set gruppe1="%%a" & FOR /F "usebackq tokens=1-7

 

delims=;" %%a IN ("D:\test.txt") DO (IF "%gruppe1%"=="%%g" (echo gruppe gleich) else (echo nein & echo gruppe ist leider %gruppe1%)))

 

Mein Problem,

jetzt hab ich noch nicht einmal den eigentlichen Befehl verwendet um die Drucker zu verbinden, denn ich scheitere ja schon daran, dass ich es nicht schaffe das allererste %%a in einer Variable weiterzuverwenden. Er zeigt einfach nichts an...

 

Haben würde ich es ja gerne so:

 

->Ist der Name der Windows Gruppen auch in der Textdatei vorhanden

->Dann nimm die Zeile aus der Textdatei

->Und verbinde zB. zu dem Drucker der in Spalte 2 steht

 

Befehle für Druckerverbinden printui.dll... und net use etc... kenne ich, brauche aber hilfe mit der Schleife.

Link to comment

Eigentlich müsste die Variable %%a doch nicht in eine neue Variable umgespeichert werden, oder?

Das %%g in der 2. Schleife einfach mit dem %%a der ersten vergleichen sollte reichen (bei mir hier funktionierts zumindest):

FOR /F "tokens=2 delims=\&." %%a IN ('%systemroot%\system32\ifmember.exe /list') DO (FOR /F "usebackq tokens=1-7 
delims=;" %%g IN (D:\test.txt) DO (IF "%%a"=="%%g" (echo gruppe gleich) else (echo nein & echo gruppe ist leider %%a)))

Link to comment

Hallo,

 

du bist der Hammer. Funktioniert!!! Hätte ich gar nicht geglaubt!

 

Für alle die's interessiert, hier der code

 

FOR /F "tokens=2 delims=\&." %%a IN ('%systemroot%\system32\ifmember.exe /list') DO (FOR /F "usebackq tokens=1-7 delims=;" %%g IN ("U:\input.txt") DO (IF "%%a"=="%%m" (echo gruppe gleich, verbinde nun & net use %%j: \\%%k\%%l) else (echo nein gruppe ist leider %%a)))

 

input.txt sieht so aus

ForFutureUse;ForFutureUse;ForFutureUse;Y;F2K803;DatenTechnik;GG-Technik

Link to comment

Im Prinzip gehts schon, z.B. in der Art:

@echo off & Setlocal EnableDelayedExpansion
SET GRUPPEN=
FOR /F %%a IN (D:\test.txt) DO SET GRUPPEN=!GRUPPEN! %%a
echo %GRUPPEN%

 

Was nicht geht:

@echo off & Setlocal EnableDelayedExpansion
SET GRUPPE=
FOR /F %%a IN (D:\test.txt) DO (SET GRUPPE=%%a & echo %GRUPPE%)

 

Warum das so ist, weiß ich allerdings selber nicht ;)

Link to comment
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...