Powershell लंबाई Get-ChildItem के आउटपुट में दिखाई नहीं देगी

Dec 20 2020

मैं इस आदेश को Windows 10 PowerShell में आज़मा रहा हूं:

Get-ChildItem -Recurse | select FullName,Length,LastAccessTime

परिणाम केवल शामिल FullNameहै, जबकि LastAccessTimeऔर Lengthउत्पादन से लापता है।

पॉवरशेल स्क्रीनशॉट

मैं क्या गलत कर रहा हूं?

जवाब

1 AshokPrasath Dec 20 2020 at 23:34

यह काम करेगा:

Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Export-Csv list.csv

3 mklement0 Dec 21 2020 at 01:07

समस्या केवल प्रदर्शन समस्या है:

  • क्योंकि उत्पादन वस्तुओं के बीच रास्तों लंबे होते हैं और 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, शुरू से छंटनी करने का एक तरीका, जबकि बाएं संरेखण को बनाए रखना भी शामिल है , इस उत्तर को देखें ।