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-Key: 319137

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

Printed on: April 28, 2024 at 13:04 o'clock

Mitglied: 131301
Solution 131301 Oct 26, 2016 updated at 08:35:14 (UTC)
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ß
Member: Lowrider614
Lowrider614 Oct 26, 2016 at 09:14:04 (UTC)
Goto Top
Top Tipp! Mir war neu, dass man auch Argumente in Anführungszeichen setzen kann.
Jetzt klappt alles.

Schöne Grüße

Tim