您需要生成要处理的文件列表,并排除不想要的文件列表,因为CACLS不允许过滤。
在这里,我使用“dir”来生成要处理的文件列表。 你也可以使用“forfiles”。
(您可以使用管道使脚本更紧凑,但我使用的是临时文件,而不是为了使其更清晰)。
@echo off
setlocal
set TMPFILE=%TEMP%\dirs.txt
set TMPFILE2=%TEMP%\dirs2.txt
@rem Generate the list of dir names to be processed
dir "%~1" /ad /s /b /p > %TMPFILE%
@rem Filter out the unwanted ones
findstr /i /v /C:"myDir\A\B\C" < %TMPFILE% > %TMPFILE2%
@rem And execute a command on each
for /F "delims=;" %%x in (%TMPFILE2%) do call :dostuff "%%x"
goto :EOF
:dostuff
@rem do the directory itself
cacls "%~1\ /E /G myUser:F
@rem do the files
cacls "%~1\*" /E /G myUser:F
goto :EOF
你有没有尝试过呢? – captcha
另一种解决方案是添加第二个命令,从文件夹中删除“myuser”访问权限。 – foxidrive