PowerShell के साथ कुछ महीनों के अनुभव और कुछ वैज्ञानिक प्रयोग के बाद, मैंने जो कुछ भी घटाया है उसका सारांश यहां दिया गया है। मैं इस दस्तावेज़ में कभी नहीं मिला :(
[ अद्यतन: इसमें से बहुत कुछ अब बेहतर प्रलेखित प्रतीत होता है।]
पढ़ना और लिखना ताला
जबकि Out-File
चल रहा है, किसी अन्य अनुप्रयोग लॉग फ़ाइल पढ़ सकते हैं।
जबकि Set-Content
चल रहा है, अन्य अनुप्रयोगों लॉग फ़ाइल नहीं पढ़ सकता। इस प्रकार लंबे चलने वाले कमांड को लॉग करने केSet-Content
लिए कभी भी उपयोग न करें ।
एन्कोडिंग
Out-File
डिफ़ॉल्ट रूप से Unicode
( UTF-16LE
) एन्कोडिंग में सहेजता है (हालांकि यह निर्दिष्ट किया जा सकता है), जबकि पावरस्ले 3+ में Set-Content
डिफॉल्ट ASCII
( US-ASCII
) यह भी निर्दिष्ट किया जा सकता है। पहले के PowerShell संस्करणों Set-Content
में, Default
(ANSI) एन्कोडिंग में सामग्री लिखी थी ।
संपादक का नोट : संस्करण 5.1 के रूप में पावरशेल अभी भी संस्कृति-विशिष्ट Default
("एएनएसआई") एन्कोडिंग के लिए चूक है , दस्तावेज़ीकरण के दावे के बावजूद। यदि ASCII डिफ़ॉल्ट थे, तो गैर-ASCII वर्ण जैसे कि शाब्दिक मेंü
बदल दिए जाएंगे , लेकिन ऐसा नहीं है: पैदावार । ?
'ü' | Set-Content tmp.txt; (Get-Content tmp.txt) -eq '?'
$False
PS > $null | out-file outed.txt
PS > $null | set-content set.txt
PS > md5sum *
f3b25701fe362ec84616a93a45ce9998 *outed.txt
d41d8cd98f00b204e9800998ecf8427e *set.txt
इसका मतलब है कि दो आदेशों की चूक असंगत हैं, और उन्हें मिश्रित करने से पाठ दूषित हो जाएगा, इसलिए हमेशा एन्कोडिंग निर्दिष्ट करें।
का प्रारूपण
जैसा कि बार्टेक ने समझाया, Out-File
आउटपुट के फैंसी स्वरूपण को बचाता है, जैसा कि टर्मिनल में देखा गया है। इसलिए दो फ़ाइलों वाले फ़ोल्डर में, कमांड dir | out-file out.txt
11 लाइनों के साथ एक फ़ाइल बनाता है।
जबकि Set-Content
एक सरल प्रतिनिधित्व बचाता है। दो फ़ाइलों के साथ उस फ़ोल्डर में, कमांड dir | set-content sc.txt
दो लाइनों के साथ एक फ़ाइल बनाता है। टर्मिनल में आउटपुट का अनुकरण करने के लिए:
PS > dir | ForEach-Object {$_.ToString()}
out.txt
sc.txt
मेरा मानना है कि इस स्वरूपण का लाइन ब्रेक के लिए एक परिणाम है, लेकिन मैं अभी तक इसका वर्णन नहीं कर सकता।
फ़ाइल निर्माण
Set-Content
मज़बूती से जब कोई खाली फ़ाइल नहीं बनाता है Out-File
:
खाली फ़ोल्डर में, कमांड dir | out-file out.txt
एक फाइल बनाता है, जबकि dir | set-content sc.txt
ऐसा नहीं करता है।
पाइप लाइन चर
Set-Content
पाइपलाइन से फ़ाइल नाम लेता है; आपको कुछ निश्चित मान के लिए कई फ़ाइलों की सामग्री सेट करने की अनुमति देता है।
Out-File
पाइप लाइन से डेटा लेता है; किसी एकल फ़ाइल की सामग्री को अद्यतन करना।
मापदंडों
Set-Content
निम्नलिखित अतिरिक्त पैरामीटर शामिल हैं:
- निकालना
- फ़िल्टर
- शामिल
- से गुजरना
- धारा
- UseTransaction
Out-File
निम्नलिखित अतिरिक्त पैरामीटर शामिल हैं:
उन मापदंडों के बारे में अधिक जानकारी के लिए, कृपया मदद करने के लिए देखें; उदा get-help out-file -parameter append
।
Set-Content
डिफ़ॉल्ट एन्कोडिंग:(Get-Culture).Textinfo.ANSICodePage
(Windows 8.1, Powershell 4.0, CurrentCulturecs-CZ
, CurrentUICultureen-GB
, ANSICodePage1250
, OEMCodePage852
, का अनुवाद'řž'
उपर्युक्त कोड पृष्ठों में विभिन्न कोडों के साथ स्ट्रिंग का उपयोग करके किया गया )।