2013-12-24 9 views
8

Работает ли параметр -Filter или -Include для любого пользователя при использовании Powershell 3.0? Я попробовал оба из следующих команд:Powershell 3.0: COPY-ITEM Параметры фильтра или включения не работают

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 

Но только интересно, кто-нибудь сталкивался с этой проблемой раньше?

ответ

16

Это происходит потому, что элемент, который вы подаете в Copy-Item является папкой, а не файлов внутри папки.

При выполнении:

Copy-Item -Path c:\temp -Include "*.txt" -Destination C:\temp2 

Вы говорите: Копировать элемент, где Путь является папка C: \ Temp. Единственным элементом, который выбран для копирования , является каталог c: \ temp. Тогда мы говорим только: «Включить элементы, которые соответствуют« * .txt ». Поскольку единственный элемент (папка «temp») не соответствует шаблону, мы ничего не делаем.

Чтобы доказать это, давайте изменим Включать фильтр «Темп», и повторно выполнить его:

Copy-Item -Path c:\temp -Include "temp" -Destination C:\temp2 

вуаля! в папке назначения у нас есть новая пустая папка: 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 (т.е. мы получаем все элементы внутри папка c: \ temp, а не папка c: \ temp), отфильтруйте их, включив только те элементы, которые соответствуют «* .txt», и скопируйте их в пункт назначения.

+1

Это было легко. Thx для наконечника. Счастливого Рождества! –

+0

Добро пожаловать! – HAL9256