jschneider
Goto Top

Bitte um Unterstützung bei folgendem for

Hallo,

ich stehe irgendwie auf dem Schlauch


ich habe eine Quelldatei auf Basis derer Inhalte ich Verzeichnisse und die dazugehörigen Gruppen im AD anlegen möchte und darüber hinaus diese Verzeichnise gleich auf die angelegte Gruppe berechtigen möchte. Soweit erstmal zum Hintergrund


meine Quelldatei hat z.B. folgende Inhalte

\RootVerzeichnis1
\RootVerzeichnis1\Unterverzeichnis1
\RootVerzeichnis1\Unterverzeichnis2

\RootVerzeichnis2
\RootVerzeichnis2\Unterverzeichnis1
\RootVerzeichnis2\Unterverzeichnis2\nocheinunterverzeichnis1
\RootVerzeichnis2\Unterverzeichnis3\nocheinunterverzeichnis2
\RootVerzeichnis2\Unterverzeichnis4\
\RootVerzeichnis2\Unterverzeichnis5\nocheinunterverzeichnis1\nocheinunterverzeichnis3

usw.

mehr als 4 Ebenen wird es nicht geben

ich möchte jetzt also jede Zeile auseinandernehmen und die Werte zwischen den "\" verarbeiten ABER ich weiss halt nicht wieviele es je Zeile sind (von 1 -4 Werte) Das muss aber abgefangen werden. das ist eigentlich mein größtest Problem

Das Verzeichnis anlegen würde schon gehen, in dem ich den ganzen String so einlese, aber ich möchte auch die Gruppen anlegen die dann so heissen sollen:


Grp_Org_RootVerzeichnis1
Grp_Org_RootVerzeichnis1_Unterverzeichnis1
Grp_Org_RootVerzeichnis2_Unterverzeichnis5_nocheinunterverzeichnis1_nocheinunterverzeichnis3


was ich bsiher habe (allerdings früheste Alpha)


@echo off & setlocal
chcp 1252

Set Source=C:\scripting\20-scripts\Quelldatei.txt
Set LW=R:


if not Exist %LW% net use %LW% \\Server1\Share1



for /f "tokens=1,* delims=\" %%i in ('findstr "\" "%Source%"') do (  
   echo Hier erfolgt ein Wunder
   call :VerzeichnisAnlegen %%i "%%K"  
   call :GruppeAnlegen
   call :BerechtigungSetzen
  )
goto :eof

:VerzeichnisAnlegen
set "Verzeichnis=%1"  
md %LW%\

goto :eof

:GruppeAnlegen
Set "vGrp=%1"  
Set grpPrefix=Grp_Org_
net group %grpPfefix%%vGRP% /domain >NUL
goto :eof

:BerechtigungSetzen
setacl Werte und Parameter hier (nicht das Poblem)
goto :eof

Content-ID: 92277

Url: https://administrator.de/contentid/92277

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

Biber
Biber 17.07.2008 um 17:56:21 Uhr
Goto Top
Moin jschneider,

ich weiss nich'...
Mag sein, dass ich zu einfach gestrickt bin für den harten Admin-Alltag, aber ich würde es mir nicht so schwer machen.

Wenn ich Deine Beispielsätze bei mir in eine Datei js.txt packe, dann kann ich es jeweils so trennen (Beispiel am CMD-Prompt, mein Prompt sieht so: ">" aus):
(=17:52:27  D:\temp=)
>For /f "delims=\ tokens=1-2" %a in (js.txt) do @if "%b"=="" @echo Roots: %a goto Roots  
Roots: RootVerzeichnis1 goto Roots
Roots: RootVerzeichnis2 goto Roots

(=17:53:45  D:\temp=)
>For /f "delims=\ tokens=1-3" %a in (js.txt) do @if "%c"=="" if "%b" NEQ "" @echo goto :EinSubdir %a\%b  
goto :EinSubdir RootVerzeichnis1\Unterverzeichnis1
goto :EinSubdir RootVerzeichnis1\Unterverzeichnis2
goto :EinSubdir RootVerzeichnis2\Unterverzeichnis1
goto :EinSubdir RootVerzeichnis2\Unterverzeichnis4

(=17:54:33  D:\temp=)
>For /f "delims=\ tokens=1-4" %a in (js.txt) do @if "%d"=="" if "%c" NEQ "" @echo goto :2Subdir %a\%b\%c  
goto :2Subdir RootVerzeichnis2\Unterverzeichnis2\nocheinunterverzeichnis1
goto :2Subdir RootVerzeichnis2\Unterverzeichnis3\nocheinunterverzeichnis2

Genauso kannst Du es doch auch im Batch handeln, oder übersehe ich etwas?

Grüße
Biber
jschneider
jschneider 18.07.2008 um 11:35:33 Uhr
Goto Top
Hallo Biber,

mag auch sein, dass ich immer zu kompliziert denke und alles (ausser Brotschneiden) viel einfacher geht als ich denke.

ich habe gestern noch mal einen anderen Ansatz ausprobiert

und zwar zähle ich einfach die dinger nicht, sondern nutze sie wie sie sind

den String
\\RootVerzeichnis2\\Unterverzeichnis2\\nocheinunterverzeichnis1 

nehme ich einfach wie er ist und nutze ihn einmal (in einer Funktion) als Pfad .. da muss ich ja nicht mehr viel mit anstellen

und einmal per
set vGrp=!vGRP:\\=_!

ersetze ich die "\" einfach durch ein "_" *brustschwell*


damit habe ich alles was ich will