在 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
开关将打印移动命令的作用。删除它以实际移动文件。
我需要遍历一个文件夹(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
开关将打印移动命令的作用。删除它以实际移动文件。