Get-ChildItemआपको फ़ाइल नाम और फ़ाइल निर्देशिकाओं को सूचीबद्ध करने की अनुमति देता है, जिसमें फ़ाइल नाम फ़िल्टर के साथ पुनरावर्ती शामिल हैं। Copy-Itemआपको एक फ़ाइल कॉपी करने की अनुमति देता है।
फ़ाइलों का चयन करने के मामले में बहुत अधिक ओवरलैप है, अक्सर यह Copy-Itemअपने आप में पर्याप्त है कि आपको क्या ज़रूरत है (उदाहरण के लिए आप फ़ोल्डर संरचना को बनाए रखना चाहते हैं?) के विवरण के आधार पर पर्याप्त है
सभी को कॉपी करने के लिए *.fooऔर *.barStartFolder से DestFolder तक:
Copy-Item -path "StartFolder" -include "*.foo","*.bar" -Destination "DestFolder"
यदि आपको फ़ोल्डर संरचना को संरक्षित करने की आवश्यकता है तो चीजें कठिन हो जाती हैं क्योंकि आपको गंतव्य फ़ोल्डर नाम बनाने की आवश्यकता है, कुछ इस तरह से:
$sourcePath = 'C:\StartFolder'
$destPath = 'C:\DestFolder'
Get-ChildItem $sourcePath -Recurse -Include '*.foo', '*.bar' | Foreach-Object `
{
$destDir = Split-Path ($_.FullName -Replace [regex]::Escape($sourcePath), $destPath)
if (!(Test-Path $destDir))
{
New-Item -ItemType directory $destDir | Out-Null
}
Copy-Item $_ -Destination $destDir
}
लेकिन robocopyआसान होने की संभावना है:
robocopy StartFolder DestFolder *.foo *.bar /s
अंत में चुनने का तरीका क्या आवश्यक है के विवरण पर निर्भर करेगा।
(ऊपर में मैंने उपनामों से परहेज किया है (उदाहरण के Copy-Itemबजाय copy) और स्पष्ट रूप से पैरामीटर नामों का उपयोग करें भले ही वे स्थितीय हों।)