我对Powershell还是比较陌生,并负责清理存档服务器。我正在尝试通过在Powershell中查看LastWriteTime来创建一个脚本,将文件移动到Year \ Month文件夹结构中。
我有以下内容,但是我不知道如何查看文件的编辑月份?
$Path = "D:\Data"
$NewPath = "D:\ArchiveData"
$Year = (Get-Date).Year
$Month = (Get-Date).Month
New-Item $NewPath\ -name $CurrentYear -ItemType Directory
New-Item $NewPath\$Year -Name $Month -ItemType Directory
Get-ChildItem -path $Path | Where-Object {$_.LastWriteTime -Contains (Get-Date).month} | Move-Item -Destination "$NewPath\$Year\$Month"
任何有关如何做到这一点的想法都会受到赞赏?
谢谢
答案 0 :(得分:1)
-contains
用于查看数组是否包含项;在这里不合适。
-eq
是您所需要的。根据您的变量$Month
,您将只需要关心的部分(即月份):
($_.LastWriteTime).Month -eq (Get-Date).month
答案 1 :(得分:1)
我想我将从另一端着手解决这个问题。可以在需要时创建目录。
当您对文件可以正确移动感到满意时,请从-WhatIf
cmdlet中删除Move-Item
。
$Path = 'C:\src\t'
$NewPath = 'C:\src\tarch'
Get-ChildItem -File -Path $Path |
ForEach-Object {
$Year = $_.LastWriteTime.Year
$Month = $_.LastWriteTime.Month
$ArchDir = "$NewPath\$Year\$Month"
if (-not (Test-Path -Path $ArchDir)) { New-Item -ItemType "directory" -Path $ArchDir | Out-Null }
Move-Item -Path $_.FullName -Destination $ArchDir -WhatIf
}