powershell - 查找最新文件名并复制为同一文件夹中的重命名文件

标签 powershell

我看到了一些类似的帖子,但不幸的是,到目前为止这对我不起作用。我想获取最新的备份文件(随机生成),然后将文件复制并重命名为同一文件夹中的固定名称,以便我可以安排恢复工作。

备份文件如下:

Fin123.bak
Fin125.bak
Sales456.bak
HRF100.bak

我想获取最新的文件(按创建日期),然后复制并重命名该文件,例如 Fin.bak。在上面的文件中,Fin125.bak 是我想复制并重命名为 Fin.bak 的最新备份文件。 powershell 脚本应忽略所有其他文件,如 Sales、HR 等。仅以 Fin 开头且具有最新创建日期的文件。

非常感谢任何帮助。 谢谢 穆罕默德

最佳答案

这应该可以解决问题。

$bak_path = "path_to_backup_folder"
get-childitem -path $bak_path -Filter "Fin?*.bak" | 
    where-object { -not $_.PSIsContainer } | 
    sort-object -Property $_.CreationTime | 
    select-object -last 1 | 
    copy-item -Destination (join-path $bak_path "FIN.BAK")

经历它;

$bak_path = "path_to_backup_folder" 将备份目录的路径声明为常量。

get-childitem -path $bak_path -Filter "Fin?*.bak" 返回文件夹 $bak_path 中匹配过滤器“Fin?.bak”的一组对象。 '?' 用于确保只有在 'fin' 和 '.bak' 之间至少有一个字符的文件匹配。

where-object { -not $_.PSIsContainer } 删除任何目录对象(以防万一)。

sort-object -Property $_.CreationTime 对列表进行排序,以便最新的文件在集合中排在最后。

select-object -last 1 选择最后一项(即最新文件),最后

copy-item -Destination (join-path $bak_path "FIN.BAK") 将最后一项作为 FIN.BAK 复制到同一目录

关于powershell - 查找最新文件名并复制为同一文件夹中的重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22457249/

相关文章:

powershell - 获取进程与总内存使用情况

powershell - 如何修复/加速 powershell 脚本?

c# - 从包含变量的C#执行多个Powershell命令

powershell - 读取文件的最后20个字节

powershell - 从 powershell 运行 Octave 脚本并等待其完成

powershell - (AD) PowerShell 中的对象相等性

json - Powershell Json 对象操作

powershell - 为什么 $_ 不返回完整的对象

powershell - Powershell追加CSV失败

从快捷方式启动脚本时 Powershell 找不到 PNPU​​TIL