PowerShellを使用してファイルのReadOnly属性を削除する方法


回答:


146

使用できますSet-ItemProperty

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

以下:

sp file.txt IsReadOnly $false

3
Set-Propertyは、パイプラインでクリーンに実行できる唯一の組み込み方法であり、ワイルドカードを使用します。{sp * .txt IsReadOnly $ false} OR {ls。-recurse -include * .cs | sp -name IsReadOnly -value $ false}
Jaykul 2009年

PowerShell v2を使用すると、spに使いにくいCmdLetバインドが表示されます。PSCX Set-WritableおよびSet-ReadOnlyにはこれらの問題はありません。発生している問題についてはブログに投稿し、後でリンクします。PowerShell v2(最新のPowerShell)にはキースの回答をお勧めします。
yzorg

3
@yzorg:では、ここで正確に何を言っているのですか?キースの答えについては、彼はPSCXを使用しています。誰もがそれらをインストールしているわけではなく、それは実際にはPowerShell v1とv2のケースではありません。
ジョーイ

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    
}  

上記のコードスニペットはこの記事から抜粋したものです

更新コメントからキースヒルの実装 を使用して(私はこれをテストしましたが、動作します)、これは次のようになります:

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

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

6
実装はそれよりも単純です:$ file.IsReadOnly = $ false
Keith Hill

15

これはネイティブ PowerShellではありませんがこれには単純なAttribコマンドを使用できます。

attrib -R file.txt

ありがとう!これは私にとってうまくいきました:dir。-r * .cs | %{$ _。fullname} | %{attrib -r $ _}
Cameron Taggart

1
ステップをスキップした可能性があります:dir。-r * .cs | %{attrib -r $ _。FullName}
Nathan Hartley

9

またはあなたは単に使うことができます:

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

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


3
コマンド(add -File)を調整して、ファイルのみを処理します。ディレクトリにプロパティはありません。
ボビーキャノン

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

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で使用できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.