在Powershell中移动文件

时间:2019-05-03 11:58:25

标签: powershell file move period

使用下面的代码作为基础(来自另一个问题),如何在两个日期之间移动文件,例如:> 2周和<13个月到另一个位置。还可以限制文件扩展名的移动吗?

true

1 个答案:

答案 0 :(得分:2)

可以用几种方法来限制要使用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参数。

对于这些,请查看the docs