powershell - Get-ChildItem का उपयोग करके मैं केवल निर्देशिका कैसे प्राप्त करूं?



7 Answers

PowerShell 3.0 में, यह आसान है:

Get-ChildItem -Directory #List only directories
Get-ChildItem -File #List only files
powershell powershell-v2.0

मैं PowerShell 2.0 का उपयोग कर रहा हूं और मैं एक निश्चित पथ की सभी उप-निर्देशिकाओं को पाइप करना चाहता हूं। निम्न आदेश सभी फ़ाइलों और निर्देशिकाओं को आउटपुट करता है, लेकिन मैं फ़ाइलों को फ़िल्टर करने का तरीका नहीं समझ सकता।

Get-ChildItem c:\mypath -Recurse

मैंने $_.Attributes का उपयोग करने का प्रयास किया है $_.Attributes प्राप्त करने के लिए गुण, लेकिन तब मुझे नहीं पता कि System.IO.FileAttributes का एक शाब्दिक उदाहरण कैसे System.IO.FileAttributes , इसकी तुलना करने के लिए। cmd.exe यह होगा

dir /b /ad /s



एक क्लीनर दृष्टिकोण:

Get-ChildItem "<name_of_directory>" | where {$_.Attributes -match'Directory'}

मुझे आश्चर्य है कि क्या PowerShell 3.0 में एक स्विच है जो केवल निर्देशिका देता है; यह जोड़ने के लिए एक तार्किक बात की तरह लगता है।




PowerShell v2 और नए से (k उस फ़ोल्डर का प्रतिनिधित्व करता है जिस पर आप अपनी खोज शुरू कर रहे हैं):

Get-ChildItem $Path -attributes D -Recurse

यदि आप केवल फ़ोल्डर नाम चाहते हैं, और कुछ भी नहीं, तो इसका उपयोग करें:

Get-ChildItem $Path -Name -attributes D -Recurse

यदि आप एक विशिष्ट फ़ोल्डर की तलाश में हैं, तो आप निम्न का उपयोग कर सकते हैं। इस मामले में, मैं myFolder नामक फ़ोल्डर की तलाश में myFolder :

Get-ChildItem $Path -attributes D -Recurse -include "myFolder"



उपयोग:

dir -Directory -Recurse | Select FullName

यह आपको रूट संरचना का आउटपुट केवल निर्देशिका के लिए फ़ोल्डर नाम के साथ देगा।




उपयोग:

Get-ChildItem \\myserver\myshare\myshare\ -Directory | Select-Object -Property name |  convertto-csv -NoTypeInformation  | Out-File c:\temp\mydirectorylist.csv

निम्नलिखित कौन सा करता है

  • लक्ष्य स्थान में निर्देशिकाओं की एक सूची Get-ChildItem \\myserver\myshare\myshare\ -Directory : Get-ChildItem \\myserver\myshare\myshare\ -Directory
  • केवल निर्देशिकाओं का नाम निकालें: Select-Object -Property name
  • आउटपुट को सीएसवी प्रारूप में कनवर्ट करें: convertto-csv -NoTypeInformation
  • परिणाम को फ़ाइल में सहेजें: Out-File c:\temp\mydirectorylist.csv






आप सभी फ़ोल्डरों और फ़ाइलों को पहले से प्राप्त करने के लिए Get-ChildItem का उपयोग करना चाहेंगे। और उसके बाद आउटपुट ऑब्जेक्ट क्लॉज में आउटपुट पाइप जो केवल फाइलें लेता है।

# one of several ways to identify a file is using GetType() which
# will return "FileInfo" or "DirectoryInfo"
$files = Get-ChildItem E:\ -Recurse | Where-Object {$_.GetType().Name -eq "FileInfo"} ;

foreach ($file in $files) {
  echo $file.FullName ;
}





Related