Я використовую сценарій 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
цим твердженням?
То що я роблю не так, і як я можу це виправити?
\*
фокус щойно вирішив близько шести проблем. Чудово та спасибі!