PowerShell का उपयोग करके फ़ाइल पर ReadOnly विशेषता को कैसे निकालें?


99

मैं PowerShell (संस्करण 1.0) स्क्रिप्ट का उपयोग करके किसी फ़ाइल पर ReadOnly विशेषता को कैसे निकाल सकता हूं?

जवाबों:


146

आप उपयोग कर सकते हैं Set-ItemProperty:

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

या इससे कम:

sp file.txt IsReadOnly $false

3
सेट-प्रॉपर्टी एकमात्र ऐसा बिल्ट-इन तरीका है जिससे आप सफाई से इसे पाइपलाइन पर कर सकते हैं, और वाइल्डकार्ड का उपयोग कर सकते हैं: {sp * .txt IsReadOnly $ false} या {ls। -क्रेसे-किंकर्तव्यविमूढ़ * .cs | एसपी -name IsReadOnly -value $ झूठी}
Jaykul

PowerShell v2 का उपयोग करते हुए मैं sp के लिए हार्ड-टू-उपयोग CmdLet bindngs देख रहा हूं। PSCX सेट-राइटिंग और सेट-रीडऑनली में वे समस्याएं नहीं हैं। मैं उन समस्याओं को ब्लॉग करूँगा जिन्हें मैं देख रहा हूँ और बाद में उनसे लिंक करूँगा। मैं 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
कीथ हिल

15

भले ही यह नेटिव पॉवरशेल नहीं है , फिर भी कोई भी इसके लिए साधारण अट्रिब्यूट कमांड का उपयोग कर सकता है :

attrib -R file.txt

धन्यवाद! यह मेरे लिए काम किया: dir। -r * .cs | % {$ _। fullname} | % {अट्रिब-आर $ _}
कैमरन टैगगार्ट

1
एक कदम छोड़ सकते थे: दिर। -r * .cs | % {अट्रिब-आर $ _। फुलनेम}
नाथन हार्टले

9

या आप बस का उपयोग कर सकते हैं:

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

ऊपर वर्तमान फ़ोल्डर के उप-ट्री में सभी .cs फ़ाइलों के लिए काम करेगा। यदि आपको अन्य प्रकार की आवश्यकता है, तो अपनी आवश्यकताओं के लिए "* .cs" को समायोजित करें।


3
केवल फ़ाइलों के साथ काम करने के लिए कमांड (ऐड-फ़िले) को समायोजित करें। निर्देशिकाएँ में संपत्ति नहीं है।
बॉबी तोप


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 में इसका उपयोग कर सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.