使用 PowerShell 每 5 分钟创建一个文件的备份副本

Create a backup Copy of a file every 5 minutes using PowerShell

有一款游戏使用一个存档。该保存文件每隔几秒钟写入一次。我想要一个脚本每 5 分钟创建一次该保存文件的备份副本。输出应如下所示:

c:\users\...000.sl2 <-- 原创

C:\users\...\backup000-15.02.2019_18-34.sl2

C:\users\...\backup000-15.02.2019_18-39.sl2

我尝试使用 LastWriteTime

将一些东西放在一起
PS C:\Users\...> $source = "C:\Users\...76561198109841889"
>> $destination = "C:\Users\...76561198109841889\backups"
>>
>> Get-ChildItem $source -Recurse -Include *.sl2 | % {
>>     $name = $_.Name.Split(".")[0] + "_" + ($_.LastWriteTime | Get-Date -Format yyyymmdd) + "_" + ($_.LastWriteTime | Get-Date  -Format hhmmss) + ".sl2"
>>     #$name = "Finished_" + ($_.LastWriteTime | Get-Date -Format yyyymmdd) + "_" + ($_.LastWriteTime | Get-Date  -Format hhmmss) + ".sl2"
>>     #$name = "Finished_" + $_.Name.Split(".")[0] +  "_" + ($_.LastWriteTime | Get-Date -Format yyyymmdd) + "_" + ($_.LastWriteTime | Get-Date  -Format hhmmss) + ".sl2"
>>     Rename-Item $_ -NewName $name
>>     Copy-Item "$($_.Directory)$name" -Destination $destination

我通过谷歌搜索我的问题找到了这段代码。按 Enter 会生成一堆文件,但之后什么也没有发生。

如果这个游戏是写一个文件,而且只写一个文件。意味着每隔几秒更换一次,然后查看那个时间戳是没有意义的,因为它永远不会达到不同的时间跨度。

只需设置一个计划,每 5 分钟复制一次文件。如果您使用 PowerShell 或批处理文件来执行此操作,这并不重要。当你复制时,当然要在目的地给它一个新的名字。

$TimeStamp = (Get-Date).ToString('mmddyyyhhmmss')
Copy-Item -Path 'D:\Game\GameFileName' -Destination "D:\Game\Backup$(GameFileName)_$(TimeStamp).bak"