需要帮助将文件移动到备份目录,但最后 10 个文件除外,这些文件是基于文件名而不是修改日期的

需要帮助将文件移动到备份目录,但最后 10 个文件除外,这些文件是基于文件名而不是修改日期的


我遇到过这样的情况:服务器正在创建日志文件 (MJ00001-MJ000x),我想将所有文件移动到备份目录,但需要保留其中的最后 10 个文件以获取存档。我查看了 robocopy 和 Powershell Move-Item,但问题是修改日期始终是当前日期,因为如果它们在目录中,服务器会查看它们(因此我无法使用基于修改日期保留最后 10 个文件的移动方法)。我更喜欢一种可以查看文件名并移动除编号最高的 10 个文件之外的所有文件的 powershell 方法,因为我可以将其放入脚本中以停止服务器服务,然后在移动后重新启动。

以下是示例文件结构:
位于 C:\Folder
mainfile.ext
MJ00001.ext
MJ00002.ext
MJ00003.ext
至 MJ00257.ext

在此示例中,我想将 MJ0001.ext - MJ00247.ext 移动到 D:\Other_Folder\

请注意,我想保留目录中的 mainfile.ext 和最高名称的 MJ 文件。

有人可以帮忙吗?

答案1

这实际上很容易-SkipLast使用Select-Object

Get-ChildItem -Path "C:\Folder" -Exclude "mainfile.ext" | Sort-Object |
    Select-Object -SkipLast 10 |Move-Item -Destination "D:\Other_Folder\"

相关内容