因为要删除一个系统文件夹Folder里所有的文件,但是修改permissions时,无论用admin还是users,对于该文件的子文件夹subfolders时都会出现access denied。测试时发现,只有当一个文件夹里没有子文件夹时,才能给予权限并删除。于是乎,试试用cmd写for循环的方式,把该文件夹里所有的子文件夹都给予full access权限。
C:\ProgramData>for /d %i IN (C:\ProgramData\xxx) do echo %i
/d是for in do函数的参数(不区分大小写),除此之外还有/r, /l,/f等。
%i 是变量(区分大小写),如果用bat批处理,则写为%%i。
(C:\ProgramData\xxx) 是参数 i 的路径,必须加(),但不能写为 (“C:\ProgramData\xxx”),因为加了引号就只执行一次。
echo %i 是打印 i 的路径。如果要遍历该路径,则写为(*.星)
执行后看到echo C:\ProgramData\xxx\a
echo C:\ProgramData\xxx\b …
说明for循环有效
然后写修改权限的语句:
for /d %i IN (*.星) do Icacls %i /grant Users:F
把文件夹下遍历找到的所有子文件夹的权限都改为了User - Full Access。
执行后看到Icacls xxx\a Users:F
processed file: xxx\a
Successfully processed 1 files; Failed processing 0 files
cacls xxx\b Users:F
processed file: xxx\b
Successfully processed 1 files; Failed processing 0 files
等等
之后可以去手动删除xxx文件夹,或者用DEL/ERASE命令去删除。