web-dev-qa-db-ja.com

Powershell 3.0:COPY-ITEMフィルターまたはインクルードオプションが機能しない

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

しかし、誰かが以前にこの問題に遭遇したかどうか疑問に思っていますか?

15
inquisitive_one

これは、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」に一致するアイテムのみを含むようにフィルタリングして、宛先にコピーします。

28
HAL9256