Batch file ICACLS无法处理子文件夹上的文件

Batch file ICACLS无法处理子文件夹上的文件,batch-file,icacls,Batch File,Icacls,目前,我正在处理一个批处理文件,以授予或拒绝所有用户执行批处理文件的权限 我面临的问题是,我正在处理的命令提供了一个输出,即“无法处理1个文件” 这是我正在编写的一段代码 set locationfolder=C:\Users\Troy\Desktop\Log Folder icacls "%locationfolder%" /deny Everyone:F /T 这是我得到的结果 processed file: C:\Users\Users\Troy\Desktop\Log Folder C

目前,我正在处理一个批处理文件,以授予或拒绝所有用户执行批处理文件的权限

我面临的问题是,我正在处理的命令提供了一个输出,即“无法处理1个文件”

这是我正在编写的一段代码

set locationfolder=C:\Users\Troy\Desktop\Log Folder
icacls "%locationfolder%" /deny Everyone:F /T
这是我得到的结果

processed file: C:\Users\Users\Troy\Desktop\Log Folder
C:\Users\Users\Troy\Desktop\Log Folder\*: Access is denied
Successfully processed 1 files; Failed processing 1 files
现在,文件夹的子文件夹和子文件如下所示

日志文件夹

  • 日志文件夹1
  • 机密文件
现在日志文件夹1包含以下子文件夹

日志文件夹1

  • 日志文件夹2
日志文件夹2包含以下子文件夹

  • 日志文件夹3
最后,日志文件夹3包含以下子文件夹和子文件

  • userdetails.txt
现在,我想根据对上述特定路径及其所有子文件和子文件夹的批处理文件的执行,向所有用户授予或拒绝权限。但是,只有基本文件夹(即C:\users\Troy\Desktop\Log文件夹)保留拒绝权限,而所有子文件夹都可以轻松访问(如果需要)直截了当地

例如,如果我在Windows文件资源管理器的位置栏中输入 C:\Users\Users\Troy\Desktop\Log文件夹,它给了我
访问被拒绝的错误。这是我所期望的。
但是,如果输入C:\Users\Users\Troy\Desktop\Log Folder\Log Folder 1\Log Folder 2,则允许我浏览子文件夹的内容

从上面代码ie的输出可以推断出

C:\Users\Users\Troy\Desktop\Log Folder\*: Access is denied
这可能意味着对*的访问被拒绝,即对所有子文件夹和子文件的访问被拒绝,因此它们不会拒绝权限

我也尝试过这段代码,但结果是一样的

icacls "%locationfolder%" /deny "Everyone":(OI)(CI)F /T
我也尝试过其他目录,也在管理员模式下运行CMD,但都是徒劳的

另外,为了让您知道,如果我使用与/grant开关相同的代码,它将按预期工作。即

icacls "%locationfolder%" /grant Everyone:F /T
返回以下输出

Successfully processed 7 files; Failed processing 0 files
因此,无论问题是什么,似乎都与/deny开关有关


请帮助。

在第一种情况下,您拒绝所有人访问该目录,因此显然
/T
失败,因为它不允许列出该目录。您应该能够通过继承来完成此操作(例如
icacls“%locationfolder%”/deny everyone:(OI)(CI)F
),假设所有子目录和文件的安全性都启用了继承。@eryksun如何确保在子目录中启用继承?对不起,如果我问了一个愚蠢的问题,我是一个初学者。另外,我尝试了两件事。首先,我尝试了使用您提到的命令
icacls“%locationfolder%”/deny Everyone:(OI)(CI)F
它只在基本文件夹上工作,而不在我前面提到的子目录上工作。其次,我尝试在上面的命令上使用/T开关,它给出了与处理1个文件失败相同的错误。请帮助。最简单的选项是
/reset/T
树,但前提是这是合理的,即不重置如果您对将丢失的单个文件和目录有自定义安全设置,则为安全性设置。@eryksun已修复该问题。我非常感谢您。希望您度过愉快的一天。