이 답변 의 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
그 진술을 함축적 으로 코딩 한 것 같 습니까?
그래서 내가 뭘 잘못하고 있으며 어떻게 수정할 수 있습니까?
\*
트릭으로 약 6 개의 문제가 해결되었습니다. 굉장하고 감사합니다!