विंडोज में किसी फाइल को बिना बदले या थर्ड पार्टी टूल्स का उपयोग कैसे करें?


24

क्या ऑन-बोर्ड टूल के साथ किसी फ़ाइल को लॉक करने का कोई तरीका है ताकि इसे हटाया या अधिलेखित नहीं किया जा सके?

कॉपी स्क्रिप्ट के परीक्षण के लिए मुझे स्क्रिप्ट lock files temporarilyमें त्रुटि से निपटने की जांच करनी होगी । XP तक मैंने इसे लॉक करने के लिए debug.exe में एक फ़ाइल को लोड किया।

क्या विंडोज 7 (और बाद में) में कोई रास्ता है?

संपादित करें
मुझे पता है कि ऐसा करने वाले कार्यक्रम हैं। मेरा सवाल यह है कि क्या खिड़कियों में एक तंत्र है। कभी-कभी मुझे पीसी पर एक स्क्रिप्ट की जांच करनी होती है और उसके लिए नए प्रोग्राम इंस्टॉल नहीं करने होते।

Edit2
यहाँ भी अच्छे सुझाव दिए गए हैं: उद्देश्यपूर्ण तरीके से किसी फ़ाइल को कैसे लॉक किया जाए? , जो, हालांकि, 3 पार्टी टूल की जरूरत है या लॉक होने के लिए फाइल को बदल दें।


क्या नोटपैड ट्रिक आपके लिए काम करती है?
निक्‍का

1
@nixda No. यह फ़ाइल को अधिलेखित करता है। मुझे इसे बदलने के बिना एक वर्तमान फ़ाइल को लॉक करने की आवश्यकता है।
मार्श-विगले

समझा। मैं अपने करीबी वोट
nixda

जवाबों:


45

मुझे लगता है कि PowerShell शायद इसे पूरा करने का सबसे साफ तरीका है। कुछ इस प्रकार है:

#Specify the file name
$fileName = "C:\myfile.txt"

#Open the file in read only mode, without sharing (I.e., locked as requested)
$file = [System.io.File]::Open($fileName, 'Open', 'Read', 'None')

#Wait in the above (file locked) state until the user presses a key
Write-Host "Press any key to continue ..."
$null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

#Close the file (This releases the current handle and unlocks the file)
$file.Close()

विराम देते समय, उपरोक्त स्क्रिप्ट "myfile.txt" को खोलने का प्रयास करते समय निम्नलिखित संकेत का कारण बनता है:

यहाँ छवि विवरण दर्ज करें


2
महान! धन्यवाद! अपनी शर्म के लिए, मुझे यह स्वीकार करना चाहिए कि मैं शक्तियां विकसित करता हूं और इसके लिए .net कक्षाओं का उपयोग करने के बारे में नहीं सोचा। [मुझे उम्मीद है कि आगे किसी भी तरह से नहीं जाएंगे :-)]
मार्श-विगले

1
अच्छा जवाब। जिज्ञासु के लिए, यहाँ है के लिए MSDN लिंक File::Openविधि कॉल (विशेष रूप से, अंतिम तर्क के मापदंडों का ब्यौरा, 'None', फ़ाइल साझा गिरावट आती किसी अन्य धागे / प्रक्रियाओं के साथ - और इसी तरह, प्रावधानों केवल पढ़ने / लिखने के लिए फ़ाइल लॉक करने के लिए मौजूद हैं , या उसके संयोजन)।
ब्रेकथ्रू

1
@moab फ़ाइल बंद है और अंत में जारी किया गया हैंडल।
दान

2
नोट $host.UI.RawUI.ReadKey(...)PowerShell ISE में विफल हो जाएगा क्योंकि ReadKey ISE के लिए लागू नहीं किया गया है। वर्कअराउंड है [void](Read-Host 'Press Enter to continue')। ठीक उसी तरह नहीं जैसे किसी कुंजी के बजाय उपयोगकर्ता को एन्टर प्रेस करना होता है। हालांकि, अधिकांश उद्देश्यों के लिए पर्याप्त अच्छा है। इस ब्लॉग पोस्ट से वर्कअराउंड आया: jeffwouters.nl/index.php/2016/06/…
SimonTewsi

4

चूंकि मुझे वह सॉफ़्टवेयर इंस्टॉल करना पसंद नहीं है जिसका मैं वास्तव में उपयोग नहीं करूंगा, मुझे एक VBScript का यह गहना मिला:

Const ForAppending = 8
Set oFSO = CreateObject("Scripting.FileSystemObject")

Set f = oFSO.OpenTextFile("C:\Tst\My2.txt", ForAppending, True)

MsgBox "Press OK to unlock the file(s)"

सारा श्रेय तोरगीर बक्केन को जाता है, आप यहां पूरी पोस्ट देख सकते हैं: http://www.pcreview.co.uk/threads/how-to-lock-files.1518829/


उन लोगों के लिए अच्छा है जो ऊपर दिए गए समाधान की तरह शक्तियां पसंद नहीं करते हैं
मार्श-

0

क्या आप इसे केवल-पढ़ने के लिए चिह्नित नहीं कर सकते? यह फ़ाइल को प्रभावी ढंग से "लॉक" करने की अनुमति देता है, इसे बदलने या हटाने की अनुमति नहीं देता है।

Attrib.exe कमांड कमांड लाइन पर उपलब्ध है, और आपको एक फ़ाइल या निर्देशिका को केवल पढ़ने के लिए सेट करने की अनुमति देगा। उस आदेश के बारे में अधिक जानकारी यहां पाई जा सकती है

इसके विपरीत, आप GUI के माध्यम से वही काम कर सकते हैं जो फ़ाइल या निर्देशिका को राइट-क्लिक करके आप केवल-पढ़ने के लिए, गुण का चयन करना चाहते हैं, और केवल-पढ़ने के लिए बॉक्स को टिक कर सकते हैं। Apply / Ok पर क्लिक करने पर नई सेटिंग फ़ाइल या निर्देशिका पर लागू होती है।


3
रीड-ओनली विशेषता केवल संशोधनों से रोकती है, लेकिन हटाने से नहीं।
ComFreek

0

क्या सुरक्षा टैब के साथ फ़ाइल तक पहुंच को सीमित करना संभव नहीं होगा, जब आप राइट-क्लिक करें और फ़ाइल या फ़ोल्डर के लिए गुण पर जाएं?

यदि उपयोगकर्ता के पास पीसी तक व्यवस्थापक पहुंच है, तो क्या यह उसे फ़ाइल / फ़ोल्डर के साथ कुछ भी करने की क्षमता को हटाने की अनुमति नहीं देगा?

मुझे यह स्वीकार करना है कि मैं टाइप करता हूं, कि मेरा काम पीसी अभी भी WinXP प्रो पर है, इसलिए मैंने जो ऊपर कहा था वह अब उपलब्ध नहीं हो सकता है - मैं अभी भी घर में अपने नए विन 8.1 प्रो बॉक्स के साथ उतना सहज नहीं हूं जितना मैं साथ हूं। Win XP के साथ काम करने के वर्ष


उपलब्ध NTFS अनुमतियों में से कोई भी लॉक की गई फ़ाइल के व्यवहार की नकल नहीं करेगा। निकटतम फ़ाइल को केवल पढ़ने के लिए बना रहा होगा, लेकिन हम यह सुनिश्चित कर सकते हैं कि ओपी उस विकल्प से अवगत है और एक अच्छे कारण के लिए फ़ाइल को लॉक करने के बारे में पूछ रहा है।
मैं कहता हूं कि मोनिका

-2

कुछ परिदृश्यों में फ़ाइल के नाम के साथ नया फ़ोल्डर बनाने का काम हो सकता है। (यानी फ़ाइल को खोलने का प्रयास करने में त्रुटि मिलती है)।


यह वास्तव में एक टिप्पणी है और मूल प्रश्न का उत्तर नहीं है
डेविडपोस्टिल

मेरे लिए यह कार्य का उत्तर था जो मुझे इस पृष्ठ पर ले गया। आप जैसे लोगों की वजह से किसी को उनके समान कार्य में नहीं मिलेगा।
noonex

3
ओपी पूछ रहा था कि किसी मौजूदा फाइल को कैसे लॉक किया जाए । उसी नाम से फोल्डर बनाना संभव नहीं है। "एक उपनिर्देशिका या फ़ाइल xxx पहले से मौजूद है" इसलिए आपका उत्तर प्रश्न में समस्या पर लागू नहीं होता है।
डेविडपोस्टिल

मुझे कई मामलों में "लॉक मौजूदा फाइल" की आवश्यकता है ताकि यह सुनिश्चित किया जा सके कि एप्लिकेशन को इसे संशोधित करने या खोलने की कोशिश में त्रुटि मिलेगी। मैं अब स्पष्ट चीजों को समझाना बंद कर दूंगा - आपका दिन अच्छा हो, सर।
noonex
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.