मैं एक फाइल कॉपी करने के लिए इस उत्तर से PowerShell स्क्रिप्ट का उपयोग कर रहा हूं । समस्या तब होती है जब मैं फ़िल्टर का उपयोग करके कई फ़ाइल प्रकारों को शामिल करना चाहता हूं।
Get-ChildItem $originalPath -filter "*.htm" | `
foreach{ $targetFile = $htmPath + $_.FullName.SubString($originalPath.Length); `
New-Item -ItemType File -Path $targetFile -Force; `
Copy-Item $_.FullName -destination $targetFile }
एक सपने की तरह काम करता है। हालाँकि, समस्या तब उत्पन्न होती है जब मैं फ़िल्टर का उपयोग करके कई फ़ाइल प्रकारों को शामिल करना चाहता हूं।
Get-ChildItem $originalPath `
-filter "*.gif","*.jpg","*.xls*","*.doc*","*.pdf*","*.wav*",".ppt*") | `
foreach{ $targetFile = $htmPath + $_.FullName.SubString($originalPath.Length); `
New-Item -ItemType File -Path $targetFile -Force; `
Copy-Item $_.FullName -destination $targetFile }
मुझे निम्नलिखित त्रुटि देता है:
Get-ChildItem : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Filter'. Specified method is not supported.
At F:\data\foo\CGM.ps1:121 char:36
+ Get-ChildItem $originalPath -filter <<<< "*.gif","*.jpg","*.xls*","*.doc*","*.pdf*","*.wav*",".ppt*" | `
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.GetChildItemCommand
मेरे पास कोष्ठक के विभिन्न पुनरावृत्तियाँ हैं, कोई कोष्ठक नहीं हैं, और -filter
, -include
चर (जैसे, $fileFilter
) के रूप में समावेशन को परिभाषित करते हुए और हर बार उपरोक्त त्रुटि प्राप्त करते हैं, और हमेशा जो कुछ भी इंगित करता है -filter
।
दिलचस्प है कि जब मैं कोड -filter "*.gif,*.jpg,*.xls*,*.doc*,*.pdf*,*.wav*,*.ppt*"
। कोई त्रुटि नहीं है, लेकिन मैं और कोई परिणाम नहीं मिलता है और कंसोल पर वापस कुछ भी नहीं है। मुझे संदेह है कि मैंने अनजाने में and
उस बयान के साथ एक कोडित किया है?
तो मैं क्या गलत कर रहा हूं, और मैं इसे कैसे सही कर सकता हूं?
\*
ट्रिक ने सिर्फ छह समस्याओं का हल निकाला है। बहुत अच्छे धन्यवाद!