icacls Batch-Datei mehrere Verzeichnisse mit Platzhaltern Hilfe benötigt

4853
user153521

Ich habe die folgende Batchdatei geschrieben, die eine großartige Arbeit durchführt und alle Ordner durchgeht, die mit der Nummer 3 beginnen und Ordnerberechtigungen auf alle 2010-Unterordner anwenden. Beispiel für die Batchdateien ist unten:

for / D %% f in (D: \ Data \ 3 *) führt "%% f \ 2010" / Vererbung: r / grant aus: r "Domain Admins" :( OI) (CI) F

Frage : Wie kann ich dieses Skript verbessern, damit ich die Berechtigungen auf einen bestimmten Ordner unter jedem Ordner innerhalb der mit 3 beginnenden Ordner anwenden kann?

Hier ist ein Beispiel meines fehlgeschlagenen Versuchs:

for / D %% f in (D: \ Data \ 3 *) führt "%% f * \ specificfolder" / vererbung: r / grant aus: r "Domain Admins" :( OI) (CI) F

2
Beachten Sie in meiner letzten Codezeile, dass der Post ein \ vor dem * entfernt. user153521 vor 11 Jahren 0
Können Sie einen Beispielverzeichnisbaum angeben, an dem Sie gerade arbeiten? soandos vor 11 Jahren 0
@soandos-Beispielverzeichnis: D: \ Data \ 3214 Client \ Accounts \ SpecificFolder Die Idee ist, dass der SpecificFolder in einem beliebigen Ordner unterhalb des 3214 'Client Directory' gesucht wird. user153521 vor 11 Jahren 0

1 Antwort auf die Frage

1
TehTechGuy

Mit folgendem Verzeichnisbaum:

D

Daten

31245 Kunde

beliebiger Ordner

bestimmten Ordner

31246 Client

beliebiger Ordner

bestimmten Ordner

Der folgende Code wendet die von Ihnen angegebenen Sicherheitsberechtigungen auf beide Verzeichnisse mit dem Namen "Specificfolder" an.

@echo off for /D %%f in ("D:\Data\3*") do for /D %%d in ("%%f\*") do icacls "%%d\specificfolder" /inheritance:r /grant:r "Domain Admins":(OI)(CI)F 

HINWEIS - Hierbei werden geschachtelte FOR-Schleifen verwendet, die von DOS (COMMAND.COM) nicht unterstützt werden. Dies funktioniert gut mit einem NT (CMD.EXE) System.

Vielen Dank für Ihre Antwort. Der Befehl in Ihrer Antwort ist das, was ich gerade für alles in D: \ Data \ 3 * -Verzeichnissen benutze, wie Sie es angegeben haben, und es funktioniert großartig. Ich hatte den Asterik in "%% f * \ specificfolder" abgelegt, weil ich möchte, dass das Skript ein weiteres Verzeichnis aufruft (mit einem beliebigen Namen, der der Grund für das * ist) und dort nach dem bestimmten Ordner suchen soll. Ich hoffe das hilft, lass es mich wissen, wenn ich es genauer erklären muss. user153521 vor 11 Jahren 0
Meine ursprüngliche Antwort wurde aktualisiert, um die oben beschriebene Verzeichnisstruktur wiederzugeben. Wenn Sie mehr wollen / brauchen, lassen Sie es mich wissen. TehTechGuy vor 11 Jahren 0
Wir sind nah! Ich habe den Code ausprobiert, das Verzeichnis wird jedoch aufgrund des Leerzeichens zwischen Kundennummer und Name abgeschnitten. Ich habe Ihren neuesten Code wie folgt geändert, ich habe nur um "%% f \ *" Anführungszeichen hinzugefügt: Für / D %% f in (D: \ Data \ 3 *) tun Sie für / D %% d in ("% % f \ * ") do icacls" %% d \ specificfolder "Beispiel: D: \ Data \ 31245 Smith \ anyfolder \ specificfolder Das Problem besteht darin, dass das Skript alle korrekten Ordner durchläuft. Es wiederholt sich jedoch selbst Client-Verzeichnis vor dem Leerzeichen wie der neueste Code. Beispiel: icacls D: \ Data \ 31245 \ anyfolder \ specificfolder user153521 vor 11 Jahren 0
Ich kann Ihr Problem nicht replizieren. Was mich stört ist, dass Sie sagen, das Skript wiederholt sich. Verwenden Sie diesen Code in Kombination mit einem anderen Code? Ich bearbeitete meine Antwort erneut und fügte auch ein Zitat um den Teil "D: \ Data \ 3 *" hinzu. Bei meinem System hat es jedoch gut funktioniert, nur die von Ihnen erwähnte Änderung vorzunehmen. Vielleicht beziehen Sie sich auf das Echo? Versuchen Sie, eine neue Batchdatei mit den beiden Codezeilen in meiner Antwort zu erstellen, und lassen Sie mich wissen, was passiert. Wenn es nicht funktioniert, geben Sie mir den vollständigen Pfad an, den Sie verwenden. TehTechGuy vor 11 Jahren 0
Mein Fehler, das Skript wurde nicht wiederholt, ich habe das gestern mit zwei gleichnamigen Dateien in der Testumgebung falsch interpretiert. user153521 vor 11 Jahren 0
Arbeitscode: - für / D %% f in (D: \ Data \ 3 *) do für / D %% d in ("%% f \ *") do icacls "%% d \ specificfolder" / Vererbung: r / grant: r "Domain Admins" :( OI) (CI) F user153521 vor 11 Jahren 0
Slayer537 du bist der Beste, danke, dass du mir geholfen hast, diese Arbeit zu machen !!!! user153521 vor 11 Jahren 0