Você pode escrever um loop para que percorra nomes de diretório com a opção / d ,
for /d %A in (e:\FTP_Root\user*) do (
icacls "%A\*" /q /c /t /reset
)
Você sempre pode testar se o loop vai fazer o que você deseja, adicionando a linha icacls com um echo , que imprimirá o comando em vez de executá-lo,
@echo icacls "%A\*" /q /c /t /reset
Aqui está em uma linha, para maior clareza.
for /d %A in (e:\FTP_Root\user*) do icacls "%A\*" /q /c /t /reset
Aqui está um teste pequenino, dada a árvore de arquivos abaixo
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
Você sempre pode adicionar o @echo
após o do
para verificar a aparência real do comando antes de executá-lo.
%%
com variáveis, enquanto o shell requer apenas um único %
, portanto, em um script de shell cmd, o loop assim:
for /d %%A in (e:\FTP_Root\user*) do icacls "%%A\*" /q /c /t /reset