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

Mag*_*ndi 97 powershell scripting powershell-1.0

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

Joe*_*oey 143

你可以使用Set-ItemProperty:

Set-ItemProperty file.txt -name IsReadOnly -value $false
Run Code Online (Sandbox Code Playgroud)

或更短:

sp file.txt IsReadOnly $false
Run Code Online (Sandbox Code Playgroud)

  • Set-Property是唯一可以在管道上干净地使用通配符的内置方法:{sp*.txt IsReadOnly $ false}或{ls.-recurse -include*.cs | sp -name IsReadOnly -value $ false} (3认同)
  • @yzorg:那你究竟在这告诉我什么?至于Keith的回答,他正在使用PSCX.不是每个人都安装了这些,而且不是PowerShell v1与v2的情况. (3认同)

Mag*_*ndi 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    
}  
Run Code Online (Sandbox Code Playgroud)

上面的代码片段来自本文

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

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

if ($file.IsReadOnly -eq $true)  
{  
  $file.IsReadOnly = $false   
}  
Run Code Online (Sandbox Code Playgroud)

  • 实现比这简单:$ file.IsReadOnly = $ false (6认同)

Sco*_*aad 15

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

attrib -R file.txt
Run Code Online (Sandbox Code Playgroud)


小智 8

或者你可以简单地使用:

get-childitem *.cs -Recurse -File | % { $_.IsReadOnly=$false }
Run Code Online (Sandbox Code Playgroud)

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

  • 调整命令(add -File)仅适用于文件.目录没有财产. (3认同)

Kei*_*ill 7

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

PS> Set-Writable test.txt
PS> dir . -r *.cs | Set-Writable
# Using alias swr
PS> dir . -r *.cs | swr
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

PS> dir . -r *.cs | Set-ReadOnly
# Using alias sro
PS> dir . -r *.cs | sro
Run Code Online (Sandbox Code Playgroud)