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


2

我是一个批处理文件,用于修复docomentum存储的所有树中的权限。 它位于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)PROGRAM:\ O:\ goSetPriv.bat

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

问题出在哪儿 ?

谢谢


Roey - 我想给你一些提示和资源,可以帮助你完全解决这个问题。您不需要将cmd.exe放在程序中,而应该只是放置脚本的完整路径,并使用参数字段,并使用路径中的start,即使它是可选的。看这里: i.imgur.com/EU2nHe1.png 以我所说的为例。您还希望确保从常规选项卡以最高权限运行。
Pimp Juice IT

此外,请在此处查看我的答案: superuser.com/questions/1214736/... 并且只是忽略节名称所在的底部 WinSCP批处理脚本示例 但是上面的所有内容都应该有助于解决从Task Scheduler运行批处理脚本可能导致问题的所有问题。如果您发现任何有助于获得解决方案等的信息,请告诉我。请务必使用以下方式标记我 @ 符号,然后是我的名字,我会收到你发表评论的通知。
Pimp Juice IT

Answers:


0

解决了

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.