我目前拥有在PowerShell中运行的以下脚本。我想获取PS脚本所在目录中的文件列表,我希望lastmodifieddate在30多天前的所有文件,然后将其移动。我不确定自己在做什么错。
param (
[Parameter(Mandatory=$true)][string]$destinationRoot
)
$path = (Get-Item -Path ".\").FullName
Get-ChildItem $path\* -Include *.xlsx|
Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)}
Foreach-Object {
$content = $path + "\" + $_.Name
$year = (Get-Item $content).LastWriteTime.year.ToString()
$monthNumber = (Get-Item $content).LastWriteTime.month
$month = (Get-Culture).DateTimeFormat.GetMonthName($monthNumber)
$destination = $destinationRoot + "\" + $year + "\" + $month
New-Item -ItemType Directory -Force -Path $destination
Move-Item -Path $content -Destination $destination -force
}
答案 0 :(得分:0)
-f
作为格式字符串$path
-File
排除目录,使用-Filter
进行过滤器扩展您可以这样修改代码:
param (
[Parameter(Mandatory=$true)][string]$destinationRoot
)
Get-ChildItem -File -Filter "*.xlsx" | Where LastWriteTime -lt (Get-Date).AddDays(-10) | %{
$destination= "{0}\{1:yyyy\\MMMM}" -f $destinationRoot, $_.LastWriteTime
New-Item -ItemType Directory -Force -Path $destination
Move-Item $_.FullName -Destination $destination -Force
}