删除以前系统遗留下来的文件(比如Windows文件夹)时提示没有权限怎么办
这些文件往往是系统文件,文件所有者为之前系统中的管理员,当前系统的管理员并无权限删除,且强行给当前系统管理员加入权限往往也会无效。此时需要分两步走:
一、更改文件所有者,需要在开始菜单中找到命令提示符(Command Prompt),右键,使用管理权限运行。使用cd命令进入包含难以删除的文件夹的,输入命令:
TAKEOWN /F 文件或文件夹名称 /R /D N
二、为系统管理员组(Administrators)添加完全控制权限(Full Control)。在刚刚的命令提示符窗口中继续输入:
icacls 文件或文件夹名 /grant Administrators:(F) /T
之后再尝试删除,一般都能解决。
2024-01-30 更新:
由于发现很多文件夹如果没有管理员权限,也无法列出子文件夹中的文件,然后这些文件需要再次takeown再次拿管理员,如果还有子文件夹,那就要再takeown+icalcls,比较麻烦。如果还要同时删除,这两个命令就不知道要跑多少次了。所以用powershell搞了一个删除三合一命令。
Get-ChildItem -Recurse -Force | foreach{takeown /f $_.fullname /r /d n; icacls $_.fullname /grant "Administrators:(F)" /T; remove-item $_.fullname -force -recurse}
如果只需要赋权不需要删除,就用下面这个:
Get-ChildItem -Recurse -Force | foreach{takeown /f $_.fullname /r /d n; icacls $_.fullname /grant "Administrators:(F)" /T}
Get-ChildItem 下的-Force命令是为了显示隐藏文件
不过上面这个命令还是有些问题,主要在remove-item后面有个-recurse,所以在前面获得父文件夹权限后,remove-item会去删子文件夹里的文件,但是子文件夹里的文件不一定有权限删。包括icacls也会有这个情况。
但是remove-item里的recurse还没法去掉,因为去掉一直会有如下提示,每个删一个文件夹都会提示一遍,非常烦:
D:\AppData\Flash Player 处的项具有子项,并且未指定 Recurse 参数。如果继续,所有子项均将随该项删除。是否确实要继续?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“Y”):
所以我又想到了这个方法:
# Grant Privilege for every files and Diectories Get-ChildItem -Recurse -Force | foreach{takeown /f $_.fullname; icacls $_.fullname /grant "Administrators:(F)"} # Delete All Files and Diectories Get-ChildItem -Recurse -Force | remove-item -force -recurse
或者
# Firstly Delete All Files Get-ChildItem -File -Recurse -Force | foreach{takeown /f $_.fullname; icacls $_.fullname /grant "Administrators:(F)"; remove-item $_.fullname -force} # Then Delete Directories Get-ChildItem -Directory -Recurse -Force | foreach{takeown /f $_.fullname; icacls $_.fullname /grant "Administrators:(F)"; remove-item $_.fullname -force}
这两个方法都是让Get-ChildItem去递归(recursively)拿文件然后让后面的几个命令去一个个文件处理,而不是最开始的get childitem没有递归拿文件,让后面的几个命令去递归处理。或者get-childitem也递归,后面也递归,都混在一起。
不过这个方法我还没完全测试过,因为现在Windows和Windows.old我都删掉了,没东西试了
posted on 2017-08-14 10:31 hejing195 阅读(1788) 评论(0) 编辑 收藏 举报