PowerShell Kullanarak Dosyadaki ReadOnly Özniteliği Nasıl Kaldırılır?


Yanıtlar:


146

Şunları kullanabilirsiniz Set-ItemProperty:

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

veya daha kısa:

sp file.txt IsReadOnly $false

3
Set-Property, bunu ardışık düzen üzerinde ve joker karakterler kullanarak temiz bir şekilde yapabileceğiniz tek yerleşik yoldur: {sp * .txt IsReadOnly $ false} VEYA {ls. -hatalı -içerir * .cs | sp -adı IsReadOnly-değeri $ false}
Jaykul

PowerShell v2 kullanarak sp için kullanımı zor CmdLet bindngs görüyorum. PSCX Set-Writable ve Set-ReadOnly bu problemlere sahip değildir. Gördüğüm sorunları blog'a yazacağım ve daha sonra ona bağlanacağım. Keith'in PowerShell v2 (modern PowerShell) cevabını öneririm.
yzorg

3
@yzorg: Peki bana burada tam olarak ne söylüyorsun? Keith'in cevabına gelince, PSCX kullanıyor. Bunları herkesin yüklemesi gerekmez ve bu gerçekten bir PowerShell v1 ve v2 durumu değildir.
Joey

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    
}  

Yukarıdaki kod parçacığı bu makaleden alınmıştır

GÜNCELLEME Keith Hill'in yorumlardaki uygulamasını kullanarak (bunu test ettim ve işe yarıyor), bu şöyle olur:

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

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

6
Uygulama bundan daha basittir: $ file.IsReadOnly = $ false
Keith Hill

15

Native PowerShell olmasa da, bunun için hala basit Attrib komutunu kullanabilirsiniz :

attrib -R file.txt

Teşekkürler! Bu benim için çalıştı: dir. -r * .cs | % {$ _. tam ad} | % {attrib -r $ _}
Cameron Taggart

1
Bir adımı atlamış olabilir: dir. -r * .cs | % {attrib -r $ _. FullName}
Nathan Hartley

9

veya basitçe kullanabilirsiniz:

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

Yukarıdakiler, geçerli klasörün alt ağacındaki tüm .cs dosyaları için çalışacaktır. Dahil edilen diğer türlere ihtiyacınız varsa, "* .cs" dosyasını ihtiyaçlarınıza göre ayarlamanız yeterlidir.


3
Komutu (-File ekle) yalnızca dosyalarla çalışacak şekilde ayarlayın. Dizinlerin özelliği yoktur.
Bobby Cannon

7

Kullanacağınız edersek PowerShell Topluluk Uzantıları :

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

Bunun tersini şu şekilde yapabilirsiniz:

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)

Bazı problemleri çözmeye yardımcı olan ve bu koda yardımcı olan herkese teşekkürler

bu kod benim için çalışıyor .. bir klasörü okuma ve yazma iznine sahip herkesle paylaşmak için bunu .net'te kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.