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

PowerShell v2를 사용하면 sp에 대해 사용하기 어려운 CmdLet bindngs가 표시됩니다. PSCX Set-Writable 및 Set-ReadOnly에는 이러한 문제가 없습니다. 내가보고있는 문제에 대해 블로그를 작성하고 나중에 링크 할 것입니다. PowerShell v2 (최신 PowerShell)에 대한 Keith의 답변을 권장합니다.
yzorg

3
@yzorg : 여기서 정확히 무엇을 말하고 있습니까? Keith의 대답은 PSCX를 사용하고 있습니다. 모든 사람이 이러한 기능을 설치 한 것은 아니며 실제로 PowerShell v1 대 v2의 경우는 아닙니다.
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    
}  

위의 코드는이 기사 에서 가져온 것입니다.

업데이트 의견에서 Keith Hill의 구현을 사용하면 (이를 테스트했으며 작동합니다) 다음과 같이됩니다.

$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)을 조정하십시오. 디렉토리에는 속성이 없습니다.
Bobby Cannon

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.