killtux 11 Posted November 19, 2009 Report Share Posted November 19, 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. Quote Link to comment
Cybquest 36 Posted November 19, 2009 Report Share Posted November 19, 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))) Quote Link to comment
killtux 11 Posted November 19, 2009 Author Report Share Posted November 19, 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 Quote Link to comment
killtux 11 Posted November 19, 2009 Author Report Share Posted November 19, 2009 Aber Trotzdem zu meinem eigenen Interesse -> Das Umspeichern geht nicht wirklich in einer for oder? Quote Link to comment
Cybquest 36 Posted November 19, 2009 Report Share Posted November 19, 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 ;) Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.