2013-07-02 8 views
21

में किसी टेक्स्ट फ़ाइल में नई लाइनें लिखना मैं एक त्रुटि लॉग फ़ाइल बना रहा हूं।PowerShell

Add-Content -path $logpath $((get-date).tostring() + " Error " + $keyPath ` 
    + $value + " key " + $key +" expected: " + $policyValue ` 
    + "`n local value is: " +$localValue 

जब मैं Get-Content लॉग फ़ाइल पर, इसे सही ढंग से प्रदर्शित करता है, इससे पहले कि नई लाइन के साथ: यह मेरे वर्तमान कोड है "स्थानीय मूल्य।"

हालांकि, जब मैं नोटपैड में लॉग फ़ाइल खोलता हूं, तो यह सब कुछ एक पंक्ति पर प्रदर्शित करता है। मैं टेक्स्ट फ़ाइल में भी एक नई लाइन डालने का कारण कैसे बना सकता हूं?

उत्तर

31

`n एक पंक्ति फ़ीड चरित्र है। नोटपैड से उम्मीद है कि लाइनब्रेक्स को `r`n (कैरिज रिटर्न + लाइन फीड, सीआर-एलएफ) के रूप में एन्कोड किया जाएगा। कुछ उपयोगी संपादक (SciTE, Notepad++, UltraEdit-32, Vim, ...) में फ़ाइल खोलें और लाइनब्रेक्स को सीआर-एलएफ में परिवर्तित करें। या PowerShell का उपयोग करें:

(Get-Content $logpath | Out-String) -replace "`n", "`r`n" | Out-File $logpath 
+0

यदि मैंने लाइनफीड से पहले कैरिज रिटर्न को शामिल करने के लिए कोड बदल दिया है, तो नोटपैड फ़ाइल को सही तरीके से दिखाएगा? – NewPowerSheller

+0

यदि आप फ़ाइल को नया बनाते हैं: हां, तो इसे एक नई बनाई गई फ़ाइल को सही ढंग से दिखाना चाहिए। –

+0

मैं PowerShell v4 ('$ PSVersionTable.PSVersion') का उपयोग कर रहा हूं और' r'n' का उपयोग करते समय दोनों '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' आउट-फाइल-एन्कोडी एसिसी 'इसलिए मैंने केवल' ''आर' पर स्विच किया जो सही ढंग से एक सिंगल लाइन स्पेस बनाता है। – user4317867

14

आप Environment class's static NewLine property उपयोग कर सकते हैं उचित न्यू लाइन प्राप्त करने के लिए:

$errorMsg = "{0} Error {1}{2} key {3} expected: {4}{5} local value is: {6}" -f ` 
       (Get-Date),$keyPath,$value,$key,$policyValue,([Environment]::NewLine),$localValue 
Add-Content -Path $logpath $errorMsg 
11

यह भी चर के न्यू लाइन और गाड़ी वापसी आवंटित और फिर उन्हें PowerShell स्क्रिप्ट के अंदर ग्रंथों में जोड़ने के लिए संभव है:

$OFS = "`r`n" 
$msg = "This is First Line" + $OFS + "This is Second Line" + $OFS 
Write-Host $msg 
2

इसे आजमाएं;

Add-Content -path $logpath @" 
$((get-date).tostring()) Error $keyPath $value 
key $key expected: $policyValue 
local value is: $localValue 
"@