我正在尝试根据创建日期将旧文件移动到文件夹中。设置是脚本应检查文件夹中是否有超过 5 年的文件,然后将它们放入按年份排序的文件夹中,每个月都有子文件夹。
$SourceDir = "C:Test"
$DestinationDir = "C:ArchiveTest"
$limit = (Get-Date).AddYears(-5)
$files = Get-ChildItem $SourceDir * | Where-Object {
!$_.PSIsContainer -and $_.CreationTime -lt $limit
}
foreach ($file in $files) {
$Directory = $DestinationDir + "" + $file.CreationTime.Date.ToString('yyyy') + "" + $file.CreationTime.Date.ToString('MM-MMM')
if (!(Test-Path $Directory)) {
New-Item $directory -Type Directory
}
Move-Item $file.FullName $Directory
我收到此错误
PS C:\Scripts> .\SortIntoMonths5Year.ps1 不能对 null 值表达式调用方法。 at C:\Scripts\SortIntoMonths5Year.ps1:11 char:69 + $Directory = $DestinationDir + " + $file。CreationTime.Date.ToString <<<<('yyyy'( + "\" + $file.CreationTime.Date.ToString('MM-MMM'( + 类别信息 : 无效操作: (到字符串:字符串( [], 运行时异常 + FullQualifiedErrorId : InvokeMethodOnNull 测试路径:无法将参数绑定到参数"路径",因为它为空。 at C:\Scripts\SortIntoMonths5Year.ps1:13 char:16 + 如果 (!(测试路径 <<<<$Directory(( + 类别信息:无效数据:(:) [测试路径],参数绑定验证异常 + FullQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand 移动项:无法将参数绑定到参数"路径",因为它为空。 at C:\Scripts\SortIntoMonths5Year.ps1:17 char:10 + 移动项目<<<<$file。全名$Directory + 类别信息 : 无效数据: (:) [移动项], 参数绑定验证异常 + FullQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Command.MoveItemCommand
自己修复了它
$SourceDir = "C:Test"
$DestinationDir = "C:ArchiveTest"
$files = get-childitem $SourceDir * | Where-Object {$_.LastWriteTime -lt (Get-Date).AddYears(-5)}
#$files = get-childitem $SourceDir *
foreach ($file in $files)
{
$Directory = $DestinationDir + "" + $file.LastWriteTime.Date.ToString('yyyy') + "" + $file.LastWriteTime.Date.ToString('MM-MMM')
if (!(Test-Path $Directory))
{
New-Item $directory -type directory
}
Move-Item $file.fullname $Directory
}