narthan 0 Geschrieben 21. Januar 2013 Melden Teilen Geschrieben 21. Januar 2013 Hallo,ich habe folgendes Problem. Ich soll mit einer Batch Datei aus dem AD die Owner einer Gruppe (sind in der Beschreibung aufgelistet), alle Gruppen die dem Owner gehören und sämtliche Mitglieder dieser Gruppen in Owner-abhängige .txt Dateien auslesen und speichern. Ich bin nun soweit, dass ich die Owner auslesen und in Dateien speichern kann, allerdings erstellt er pro gefundenen Owner eine neue .txt Datei.Das Problem ist dabei, wenn ich nun 3 Gruppen mit dem gleichen Owner (z.B. Owner: Müller) habe, dann erstellt er mir auch 3 .txt Dateien... Ich möchte aber eine .txt für jeden Owner, in dieser .txt Datei sollten dann alle Gruppen mit Membern aufgelistet werden. Mein Code sieht wie folgt aus: ECHO OFF & setlocal enabledelayedexpansion dsquery group "Pfad,Domain" -limit 400 | dsget group -desc > DescriptionList.txt SET /a num=0 FOR /F "delims=" %%a IN (DescriptionList.txt) DO CALL :ausgabe "%%a" ECHO. ECHO Anzeige der erzeugten Variablen: SET v PAUSE GOTO :eof :ausgabe SET /a num=%num%+1 ECHO Textzeile ist %1 ECHO Zeilennummer=%num% SET var%num%=%1 ECHO Variableninhalt=!var%num%! ECHO !var%num%! | findstr "Owner">NUL IF not errorlevel 1 ECHO !var%num%! > Owner_var%num%.txt Über Hilfe wäre ich sehr dankbar (Powershell, VBS, etc. kommen nicht in Frage, nur Batch (DOS, Win2k3 Server).Gruß Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 21. Januar 2013 Melden Teilen Geschrieben 21. Januar 2013 Hallo, Vielleicht hilfts schon, wenn du in der letzten Zeile > durch >> ersetzt und einen festen, anstelle eines variablen Dateinamens setzt. Warum setzt du auf eine 20 Jahre alte Technologie wie Batch? Muss das Script auf einem NT3.51 Server laufen? blub Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 22. Januar 2013 Melden Teilen Geschrieben 22. Januar 2013 Moin, ich denke auch, dass das Problem selbstgemacht ist. Du hängst die Zeilennummer an den Ownernamen, um den Dateinamen zu erzeugen. Lass die Nummer weg und nimm >> als Umleiter, dann solltest du es haben. Warum setzt du auf eine 20 Jahre alte Technologie wie Batch? Muss das Script auf einem NT3.51 Server laufen? Wieso 20 Jahre? Batch ist natürlich bedeutend älter. Es dürfte in DOS 1.0 enthalten gewesen sein, wenn es nicht sogar schon in CP/M existierte. http://de.wikipedia.org/wiki/Microsoft_Batch Schöne Grüße, Nils Zitieren Link zu diesem Kommentar
s_sonnen 20 Geschrieben 22. Januar 2013 Melden Teilen Geschrieben 22. Januar 2013 Hi Nils. "... wenn es nicht sogar schon in CP/M existierte." Mit Deiner Vermutung liegst Du richtig. In CP/M gab's 'ne, allerdings ziemlich rudimentäre, Batchsprache. Dagegen waren die ersten in DOS implementierten fast schon komfortabel. War aber trotzdem damals 'ne feine Sache :cool: . ciao und 'nen angenehmen Dienstag M. Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 22. Januar 2013 Melden Teilen Geschrieben 22. Januar 2013 Moin, War aber trotzdem damals 'ne feine Sache :cool: . lass mich raten: Du bist nicht nur "Board Veteran", sondern sogar "IT Veteran"? ;) Schöne Grüße, Nils Zitieren Link zu diesem Kommentar
narthan 0 Geschrieben 22. Januar 2013 Autor Melden Teilen Geschrieben 22. Januar 2013 Hallo, Hallo, Vielleicht hilfts schon, wenn du in der letzten Zeile > durch >> ersetzt und einen festen, anstelle eines variablen Dateinamens setzt. Warum setzt du auf eine 20 Jahre alte Technologie wie Batch? Muss das Script auf einem NT3.51 Server laufen? blub Ich habs getestet, aber das liefert leidert nicht das, wie ich es mir vorgestellt habe. :/ Nein, lediglich deshalb, weil ich die Aufgabe bekommen habe mit Batch zu arbeiten.^^ Moin, ich denke auch, dass das Problem selbstgemacht ist. Du hängst die Zeilennummer an den Ownernamen, um den Dateinamen zu erzeugen. Lass die Nummer weg und nimm >> als Umleiter, dann solltest du es haben. Schöne Grüße, Nils Ich poste mal, wie das End-Resultat gedacht sein soll: Also meine DescriptionList.txt sieht bspweise wie folgt aus: Owner: Max Mustermann Owner: Peter Meier Owner: Karsten Müller Owner: Max Mustermann Owner: Ulla Schulz Owner: Ulla Schulz usw...und ich müsste eine .txt erstellen (zu einem dieser Owner, z.B. Max Mustermann), die wie folgt gegliedert sein sollte:MaxMustermann.txt Owner: Max Mustermann Gruppe ABC: - Ulla Schulz - Karsten Müller - Peter Meier Gruppe DCE: - Ulla Schulz - Peter Meier Max Mustermann wäre in diesem Fall der Owner der Gruppen ABC und DCE, darunter sind die dazugehörigen Gruppenmitglieder aufgelistet. Ich hoffe es wurde nun klarer, das hätte ich wohl mit im Ausgangspost vermerken soll zu Beginn. Grüße Zitieren Link zu diesem Kommentar
narthan 0 Geschrieben 23. Januar 2013 Autor Melden Teilen Geschrieben 23. Januar 2013 Moin, habe die Lösung mit Hilfe eines anderen Forum erarbeitet: @echo off & setlocal for /f "delims=" %%a in ('dsquery group "Pfad,Domäne" -limit 999') do call :ProcessGroup %%a pause goto :eof :ProcessGroup for /f "tokens=1* delims=: " %%i in ('dsget group %1 -desc ^| findstr "Owner"') do set "Owner=%%j" set "File=%Owner: =%.txt" for /f "tokens=2 delims==," %%i in (%1) do set "Group=%%i" setlocal enabledelayedexpansion if not exist "%File%" >>"%File%" echo Owner: %Owner% >>"%File%" echo Gruppe %Group%: endlocal for /f "tokens=2 delims==," %%i in ('dsget group %1 -members') do >>"%File%" echo - %%i >>"%File%" echo( goto :eof Trotzdem danke für eure Hilfe, Grüße :) 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.