Ищете лучший способ написать сценарий для нескольких папок.
Прямо сейчас у меня есть скрипт icacls, который сбрасывает разрешения для файлов / папок из родительской папки:
icacls "e:\FTP_Root\user1\*" /q /c /t /reset
icacls "e:\FTP_Root\user2\*" /q /c /t /reset
icacls "e:\FTP_Root\user3\*" /q /c /t /reset
Есть ли лучший способ сделать это, чтобы мне не приходилось постоянно добавлять строки для новых пользователей?
Каждая пользовательская папка имеет свои собственные разрешения, применяемые к ней, поэтому все, что находится в папке пользователей, сбрасывает свои разрешения, чтобы наследовать от папки пользователей, используя сценарий выше.
Вы можете написать для цикл, который перебирает имена каталогов с / д переключатель
for /d %A in (e:\FTP_Root\user*) do (
icacls "%A\*" /q /c /t /reset
)
Вы всегда можете проверить, будет ли цикл делать то, что вы хотите, добавив icacls линия с эхо, который будет печатать команду, а не выполнять ее,
@echo icacls "%A\*" /q /c /t /reset
Вот он для ясности в одной строке.
for /d %A in (e:\FTP_Root\user*) do icacls "%A\*" /q /c /t /reset
Вот небольшой тест, учитывая дерево файлов ниже
E:\FTP_ROOT
|
+---user1
| bar.txt
| baz.txt
| foo.txt
|
+---user2
| bar.txt
| baz.txt
| foo.txt
|
\---user3
bar.txt
baz.txt
foo.txt
C:\>for /d %A in (e:\FTP_Root\user*) do icacls "%A\*" /q /c /t /reset
C:\>icacls "e:\FTP_Root\user1\*" /q /c /t /reset
Successfully processed 3 files; Failed processing 0 files
C:\>icacls "e:\FTP_Root\user2\*" /q /c /t /reset
Successfully processed 3 files; Failed processing 0 files
C:\>icacls "e:\FTP_Root\user3\*" /q /c /t /reset
Successfully processed 3 files; Failed processing 0 files
Вы всегда можете добавить @echo
после do
чтобы проверить, как на самом деле будет выглядеть команда, прежде чем запускать ее по-настоящему.
Циклы FOR в скриптах Скрипты Windows .bat / .cmd требуют удвоения %%
с переменными, тогда как оболочке требуется только один %
, поэтому в сценарии оболочки cmd цикл будет выглядеть так:
for /d %%A in (e:\FTP_Root\user*) do icacls "%%A\*" /q /c /t /reset