101

如何使用 PowerShell(1.0 版)脚本删除文件的 ReadOnly 属性?

4

6 回答 6

148

您可以使用Set-ItemProperty

Set-ItemProperty file.txt -name IsReadOnly -value $false

或更短:

sp file.txt IsReadOnly $false
于 2009-05-21T23:57:08.383 回答
16
$file = Get-Item "C:\Temp\Test.txt"

if ($file.attributes -band [system.IO.FileAttributes]::ReadOnly)  
{  
  $file.attributes = $file.attributes -bxor [system.IO.FileAttributes]::ReadOnly    
}  

上面的代码片段摘自这篇文章

更新 使用评论中的 Keith Hill 的实现(我已经测试过了,它确实有效),这变成了:

$file = Get-Item "C:\Temp\Test.txt"

if ($file.IsReadOnly -eq $true)  
{  
  $file.IsReadOnly = $false   
}  
于 2009-05-21T14:22:52.597 回答
15

即使它不是本PowerShell,仍然可以为此使用简单的Attrib命令:

attrib -R file.txt
于 2009-05-22T15:49:21.303 回答
10

或者您可以简单地使用:

get-childitem *.cs -Recurse -File | % { $_.IsReadOnly=$false }

以上将适用于当前文件夹子树中的所有 .cs 文件。如果您需要包含其他类型,则只需根据您的需要调整“*.cs”。

于 2014-09-24T07:09:26.663 回答
7

如果您碰巧使用PowerShell 社区扩展

PS> Set-Writable test.txt
PS> dir . -r *.cs | Set-Writable
# Using alias swr
PS> dir . -r *.cs | swr

你可以像这样做相反的事情:

PS> dir . -r *.cs | Set-ReadOnly
# Using alias sro
PS> dir . -r *.cs | sro
于 2009-05-21T15:01:03.723 回答
2
Shell("net share sharefolder=c:\sharefolder/GRANT:Everyone,FULL")
Shell("net share sharefolder= c:\sharefolder/G:Everyone:F /SPEC B")
Shell("Icacls C:\sharefolder/grant Everyone:F /inheritance:e /T")
Shell("attrib -r +s C:\\sharefolder\*.* /s /d", AppWinStyle.Hide)

感谢任何帮助解决某些问题的人......并帮助此代码

此代码对我有用.. 与具有读写权限的每个人共享一个文件夹,您可以在.net 中使用它

于 2013-08-13T02:56:52.150 回答