killtux 11 Geschrieben 19. November 2009 Melden Teilen Geschrieben 19. November 2009 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. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 19. November 2009 Melden Teilen Geschrieben 19. November 2009 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))) Zitieren Link zu diesem Kommentar
killtux 11 Geschrieben 19. November 2009 Autor Melden Teilen Geschrieben 19. November 2009 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 Zitieren Link zu diesem Kommentar
killtux 11 Geschrieben 19. November 2009 Autor Melden Teilen Geschrieben 19. November 2009 Aber Trotzdem zu meinem eigenen Interesse -> Das Umspeichern geht nicht wirklich in einer for oder? Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 19. November 2009 Melden Teilen Geschrieben 19. November 2009 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 ;) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.