Powershell 3.0を使用する場合、-Filterまたは-Includeパラメーターは誰でも機能しますか?私は次のコマンドの両方を試しました:
Copy-Item -Path c:\temp -Include "*.TXT" -Destination C:\temp2
そして
Copy-Item -Path c:\temp -Filter "*.TXT" -Destination C:\temp2
実際、-Filterオプションの場合、空の「temp」フォルダーがc:\ TEMP2に作成されます。次のコマンドが機能することを知っています。
Copy-Item -Path c:\temp\*.TXT -Destination C:\temp2
しかし、誰かが以前にこの問題に遭遇したかどうか疑問に思っていますか?
これは、Copy-Itemにフィードしているアイテムが、フォルダー内のfilesではなく、folderであるためです。
実行すると:
Copy-Item -Path c:\temp -Include "*.txt" -Destination C:\temp2
あなたは言っています:コピーアイテム、パスはフォルダーc:\ tempです。コピーするために選択された唯一のアイテムisディレクトリc:\ temp。次に、「*。txt」に一致するアイテムのみを含めます。唯一のアイテム(フォルダ「temp」)がパターンに一致しないため、何もしません。
これを証明するために、インクルードフィルターを「temp」に変更して再実行しましょう。
Copy-Item -Path c:\temp -Include "temp" -Destination C:\temp2
Voilà!宛先フォルダーには、新しい空のフォルダーc:\ temp2\tempがあります。 (コピーするように指示したのは「temp」フォルダーのみであり、他のものをコピーするように指示しなかったため、空です)
したがって、パート2の場合、実行すると次のようになります。
Copy-Item -Path c:\temp\*.txt -Destination C:\temp2
これは、*。txtを使用して、パターン* .txtに一致するディレクトリ内のすべてのアイテムを反復処理し、それらのパスをCopy-Itemにフィードして、宛先にコピーすると言っているために機能します。
これを証明するために、それを変更して、インクルードフィルターを指定しましょう。
Copy-Item -Path c:\temp\* -Include "*.txt" -Destination C:\temp2
ここでは、c:\ tempフォルダー内のすべてのアイテムを取得しています(つまり、すべてのアイテムを取得していますinsideフォルダーc:\ tempであり、theフォルダーcではありません)。 :\ temp)、「*。txt」に一致するアイテムのみを含むようにフィルタリングして、宛先にコピーします。