この回答の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つの問題を解決しました。素晴らしいです、ありがとう!