使用 icacls 作为计划任务运行批处理

使用 icacls 作为计划任务运行批处理

我有一个批处理文件,可以修复文档存储的所有树中的权限。它位于 UNC 操作目录中。

goSetPriv.bat

@echo off   
set /a _cnt=0
set _docdir="UNC_DCTM_PATH_TO_SCAN\*"
if (%1) NEQ () set _docdir="%*"
set _start=%date:~4,10% %time%

pushd UNC_OF_OP_DIR
FOR /D %%I in (%_docdir%) DO (
    icacls %%I /grant:r ssis_admin:R /inheritance:e > nul
    call :counter
)
......

counter:
......

当我将 goSetPriv 作为计划任务运行时(最高权限,Windows 7 Server 2008R2)程序:\O:\goSetPriv.bat

它快速遍历所有父目录,而不更改子目录和其中文件的权限。当我不直接从 cmd 运行批处理(即 O:>goSetPriv.bat)时,它会缓慢地更改所有父目录中的所有子文件夹和文件。

哪里有问题 ?

谢谢

答案1

解决了

pushd UNC_OF_OP_DIR
FOR /D %%I in (%_docdir%) DO (
    icacls %%I /grant:r ssis_admin:R /inheritance:e /T
)

由于某种原因,手动运行此批处理将遍历所有文件和子文件夹(不提示文件)。当您将其作为计划任务运行时,您必须隐式添加遍历开关(提示文件)

相关内容