在 Powershell 中相对于当前位置移动项目

Move Items relative to current location in Powershell

我需要遍历一个文件夹(ParentLogFolder),找到日志并将它们从相对文件夹(SUBLOG)移动到子文件夹(CompressedLogFolder)

父日志文件夹
---子日志
------压缩日志文件夹
---子日志
------压缩日志文件夹

文件夹结构,不限2个SubLog文件夹,可以100+

$Path = "C:\ParentLogFolder"
$Pattern = "*.log"
$date = get-date
$AgeLimit = $date.AddDays(-31)
Get-ChildItem -Filter $Pattern -path $path -recurse | Where-Object 
{$_.LastWriteTime -lt $AgeLimit} | Move-Item -Path

我不知道如何将父文件夹的文件放入变量并将子文件夹添加为 Move-Item 部分中的目标。

哪位大侠能帮忙解答一下吗?

不要介意代码的 $Date 部分,它可以工作,只是因为它需要在解决方案中。

考虑强调代码清晰度而不是在线。也就是说,通过分而治之的方法将流程分解为子步骤。当管道使用不多时,更容易检查变量是否有不正确的值。像这样,

$allFiles = Get-ChildItem -Filter $Pattern -path $path -recurse
$oldFiles = $allFiles | ? { $_.LastWriteTime -lt $ageLimit }

foreach($file in $oldFiles) {
    $archiveFolder = join-path $file.DirectoryName 'someArchiveFolder'
    $destination = join-path $archiveFolder $file.Name
    move-item -whatif $file.FullName $destination
}

-whatif 开关将打印移动命令的作用。删除它以实际移动文件。