Powershell लंबाई Get-ChildItem के आउटपुट में दिखाई नहीं देगी
मैं इस आदेश को Windows 10 PowerShell में आज़मा रहा हूं:
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime
परिणाम केवल शामिल FullName
है, जबकि LastAccessTime
और Length
उत्पादन से लापता है।
पॉवरशेल स्क्रीनशॉट
मैं क्या गलत कर रहा हूं?
जवाब
यह काम करेगा:
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Export-Csv list.csv
समस्या केवल प्रदर्शन समस्या है:
क्योंकि उत्पादन वस्तुओं के बीच रास्तों लंबे होते हैं और
FullName
है पहले संपत्ति को चुन लिया, शेष गुण (स्तंभ) नहीं है प्रिंट , क्योंकि वे स्क्रीन पर फिट नहीं कर सकते। हालांकि, गुण हैं मौजूद है, और प्रोग्राम के रूप में इस्तेमाल किया जा सकता।नोट: यदि आशय बाद के प्रोग्रामेटिक प्रोसेसिंग के लिए किसी फ़ाइल को सहेजने का है , तो आपको उपयोग नहीं करना चाहिए
>
/Out-File
, जिसके परिणामस्वरूप समान -प्रदर्शन स्वरूपण जो आप कंसोल (टर्मिनल) में देखते हैं, क्योंकि यह स्वरूपण केवल के लिए है मानव पर्यवेक्षक ।- के लिए कार्यक्रम संबंधी प्रसंस्करण , एक का उपयोग संरचित डेटा स्वरूप इस तरह के सीएसवी के रूप में , के रूप में में दिखाया अशोक Prasath के जवाब
समाधान :
एक त्वरित और गंदा वैकल्पिक हल करने के लिए है डाल
FullName
संपत्ति पिछले , के रूप में डौग Maurer , सलाह देता है जो कर देगा सभी हालांकि, गुण (स्तंभ) शोFullName
संपत्ति मूल्यों की जाएगी छोटा कर दिया (के साथ का प्रतीक…
), और से विशेष रूप से शुरू रास्तों में से:# FullName is placed *last* # Caveat: Paths will be truncated at the *end*. Get-ChildItem -Recurse | select Length, LastAccessTime, FullName
यदि आपको सूची- आधारित प्रारूप पर स्विच करने में कोई आपत्ति नहीं है , जहां प्रत्येक संपत्ति का मूल्य संपत्ति के नाम, पाइप से उपसर्ग की अपनी लाइन पर दर्शाया गया है Format-List; ध्यान दें कि लंबे समय तक मान लाइन-लपेटेंगे :
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Format-List
यदि आप सारणीबद्ध आउटपुट चाहते हैं और अपने आउटपुट में लाइन-रैपिंग का बुरा नहीं मानते हैं , तो आप सभी कॉलमों को फिट करने के लिए पर्याप्त मूल्य के Out-Stringसाथ पाइप कर सकते
-Width
हैं (ध्यान दें कि Out-Fileयह भी समर्थन करता है-Width
):Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Out-String -Width 300
आप क्षैतिज स्क्रॉल चाहें, तो पंक्ति लपेटना करने के लिए, आप ऊपर एक फाइल करने के लिए बचा सकता है और एक पाठ संपादक में खोलने जैसे एक पाठ संपादक के साथ या, दृश्य स्टूडियो कोड , आप सीधे कर सकते हैं पाइप इसे करने के लिए उत्पादन:
# Opens the output directly in a new Visual Studio Code editor tab. Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Out-String -Width 300 | code -
अन्यथा - यदि आप कंसोल में सारणीबद्ध प्रदर्शन देखना चाहते हैं , तो निर्दिष्ट कॉलम क्रम में और बिना लाइन-रैपिंग के - आपका एकमात्र विकल्प मानों को छोटा करना है
FullName
ताकि सभी कॉलम फिट हो सकें; ध्यान दें, संक्षिप्तता के लिए, मैं प्रत्यक्ष उपयोग के पक्ष मेंselect
( Select-Object) कॉल को छोड़ रहा हूं Format-Table:Get-ChildItem -Recurse | Format-Table @{ e='FullName'; w=[Console]::WindowWidth-45; a='right'}, Length, LastAccessTime
ध्यान दें कि कॉलम की चौड़ाई (
w
प्रवेश, शॉर्ट के लिएwidth
) कंसोल विंडो के साथ ([Console]::WindowWidth
) माइनस45
वर्णों पर आधारित हैFullName
, अन्य दो स्तंभों के लिए कमरे से बाहर निकलते समय जितना संभव हो उतना मूल्यों को दिखाने के लिए; यह भी, यह सुनिश्चित करने के लिए कि ट्रंकेशन ( जिस पर पथ…
के शुरू होने का प्रतीक लगाया गया है - ताकि फ़ाइल / निर्देशिका नाम हमेशा प्रदर्शित हो - कॉलम राइट-एलाइन किया गया है (a
एंट्री के लिए, शॉर्ट के लिएalignment
); यदि आप अंत का ट्रंकेशन पसंद करते हैं; पथ के, छोड़a
प्रविष्टि (जो तब डिफ़ॉल्ट रूप मेंleft
)।इस हैशटेबल-आधारित (
@{ ... }
) के लिए तथाकथित गणना की गई संपत्तियों को निर्दिष्ट करने के तरीके के बारे में अधिक जानकारी के लिएFormat-Table
, शुरू से छंटनी करने का एक तरीका, जबकि बाएं संरेखण को बनाए रखना भी शामिल है , इस उत्तर को देखें ।