Ограничение выборки файлов с помощью Get-ChildItem
может быть сделано несколькими способами.
Первый - использовать параметр -Filter
:
# set up the start and end dates
$date1 = (Get-Date).AddDays(-14)
$date2 = (Get-Date).AddMonths(-13)
# using -Filter if you want to restrict to one particular extension.
Get-ChildItem -Path "E:\source" -Filter '*.ext' |
Where-Object {$_.LastWriteTime -lt $date1 -and $_.LastWriteTime -gt $date2} |
Move-Item -Destination "F:\target"
Если вам нужно ограничиться несколькими расширениями, вы не можете сделать это с параметром -Filter
. Вместо этого вам нужно использовать параметр -Include
, который может принимать массив шаблонов Вилкарты.
Обратите внимание, что для работы -Include
необходимо либо использовать переключатель -Recurse
, либо указать путь для Get-ChildItem
, заканчивающийся на \*
, например:
# using -Include if you want to restrict to more than one extensions.
Get-ChildItem -Path "E:\source\*" -Include '*.ext1', '*.ext2', '*.ext3' |
Where-Object {$_.LastWriteTime -lt $date1 -and $_.LastWriteTime -gt $date2} |
Move-Item -Destination "F:\target"
Тогда есть параметр -Exclude
, который, подобно -Include
, также принимает строковый массив подстановочных параметров, которые отфильтровывают расширения, которые вам НЕ нужны.
Если вам нужно отфильтровать атрибуты файла, такие как ReadOnly, Hidden и т. Д., Вы можете использовать параметр -Attributes
.
Для этого взгляните на документы