ฉันจะลบแอตทริบิวต์ ReadOnly บนไฟล์โดยใช้สคริปต์ PowerShell (เวอร์ชัน 1.0) ได้อย่างไร
ฉันจะลบแอตทริบิวต์ ReadOnly บนไฟล์โดยใช้สคริปต์ PowerShell (เวอร์ชัน 1.0) ได้อย่างไร
คำตอบ:
คุณสามารถใช้Set-ItemProperty
:
Set-ItemProperty file.txt -name IsReadOnly -value $false
หรือสั้นกว่า:
sp file.txt IsReadOnly $false
$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
}
แม้ว่าจะไม่ใช่Native PowerShell แต่ก็ยังสามารถใช้คำสั่งAttribง่ายๆสำหรับสิ่งนี้:
attrib -R file.txt
หรือคุณสามารถใช้:
get-childitem *.cs -Recurse -File | % { $_.IsReadOnly=$false }
ด้านบนจะใช้ได้กับไฟล์. cs ทั้งหมดในแผนผังย่อยของโฟลเดอร์ปัจจุบัน หากคุณต้องการประเภทอื่น ๆ ให้ปรับ "* .cs" ตามความต้องการของคุณ
หากคุณกำลังใช้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
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