如何使用PowerShell删除文件上的ReadOnly属性?

时间:2009-05-21 14:20:32

标签: powershell powershell-v1.0 scripting

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

6 个答案:

答案 0 :(得分:140)

您可以使用Set-ItemProperty

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

或更短:

sp file.txt IsReadOnly $false

答案 1 :(得分: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    
}  

以上代码段取自此article

<强>更新 使用评论中的Keith Hill's实现(我已经测试了它,它确实有效),这变为:

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

if ($file.IsReadOnly -eq $true)  
{  
  $file.IsReadOnly = $false   
}  

答案 2 :(得分:15)

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

attrib -R file.txt

答案 3 :(得分:8)

或者你可以简单地使用:

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

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

答案 4 :(得分:7)

如果您正好使用PowerShell Community Extensions

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

答案 5 :(得分: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

中使用它