lowrider614
Goto Top

CMD: icacls in for-Schleife

Hallo,

Was ich habe:
Einen übergeordneten Ordner mit ca. 100 Projektverzeichnisen drin.

Was ich will:
In jedem Projektverzeichnis einen Unterordner names Labor anlegen und der Gruppe Labormitarbeiter Schreibrechte zuweisen.
Das Ganze per CMD automatisieren.

Meine Testumgebung liegt unter D:\Test. Darin befinden sich vier Unterordner (=Projektverzeichnise), in welchen ein weiterer Unterordner Labor angelegt wurde. Nun muss ich noch der Gruppe Labormitarbeiter Schreibrechte zuweisen. Und da hapert es.

Mein Codeschnipsel:

@echo off
set rootdir=D:
set projekt=%rootdir%\Test
for /d %%i in (%projekt%\*) do (
	echo %%i
	mkdir %%i\Labor  
	echo "Diese Unterverzeichnise sind in %%i vorhanden:"  
	dir %%i /A / B /P
	icacls %%i\Labor /grant:r <Domäne>\Labormitarbeiter:(CI)(OI)(w,rx)
	echo Berechtigungen
	icacls %%i\Labor
)
set localusersdir=
set rootdir=
pause

Die Fehlermeldung die erscheint ist Folgende:
"(OI)(w" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Koischerweise funktioniert der icacls Befehl aber, wenn ich nur den Pfad als Argument übergebe. Dann listet er brav alle Berechtigungen auf.

Hat jemand eine Idee, was ich da falsch mache?

Danke!

Schöne Grüße

Tim

Content-ID: 319137

Url: https://administrator.de/forum/cmd-icacls-in-for-schleife-319137.html

Ausgedruckt am: 07.04.2025 um 22:04 Uhr

131301
Lösung 131301 26.10.2016 aktualisiert um 10:35:14 Uhr
Goto Top
Die Klammern für die Propagation und Inheritance im ICACLS Befehl mag der Interpreter hier nicht da in For-Schleife, kapsele sie in Anführungszeichen
"<Domäne>\Labormitarbeiter:(CI)(OI)(w,rx)"

Und die ganzen Pfade wie
%%i\Labor
etc.
solltest du auch in Anführungszeichen setzen. Denn wenn du mal Leerzeichen im Pfad hast wird das so wie es jetzt dort steht schief gehen.

Gruß
Lowrider614
Lowrider614 26.10.2016 um 11:14:04 Uhr
Goto Top
Top Tipp! Mir war neu, dass man auch Argumente in Anführungszeichen setzen kann.
Jetzt klappt alles.

Schöne Grüße

Tim