web-dev-qa-db-ja.com

PowerShellを使用してファイルの読み取り専用属性を削除する方法

PowerShell(バージョン1.0)スクリプトを使用して、ファイルのReadOnly属性を削除するにはどうすればよいですか?

96
MagicAndi

Set-ItemPropertyを使用できます:

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

以下:

sp file.txt IsReadOnly $false
141
Joey
$file = Get-Item "C:\Temp\Test.txt"

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

上記のコードスニペットは、これから取得されます 記事

[〜#〜] update [〜#〜]コメントから Keith Hill's 実装を使用します(これをテストし、動作します)、これは次のようになります:

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

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

NativePowerShellではありませんが、単純な Attrib コマンドを使用できます:

attrib -R file.txt
15
Scott Saad

または、単に使用することができます:

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

上記は、現在のフォルダーのサブツリー内のすべての.csファイルに対して機能します。他のタイプを含める必要がある場合は、ニーズに合わせて「* .cs」を調整するだけです。

8
Mariusz Gorzoch

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
7
Keith Hill
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でこれを使用できる読み取りおよび書き込み権限を持つすべての人とフォルダを共有するために

2
redz