有一款游戏使用一个保存文件。该保存文件每隔几秒钟写入一次。我希望一个skript每5分钟为该保存文件创建一个备份副本。输出应如下所示:
c:\users\...\10000.sl2
<-原始
C:\users\...\backup\10000-15.02.2019_18-34.sl2
C:\users\...\backup\10000-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键会产生一堆文件,但随后又什么也没发生。
答案 0 :(得分:0)
如果该游戏正在写入一个文件,则只能写入一个文件。意思是每隔几秒钟更换一次,然后查看该时间戳是没有意义的,因为它永远不会到达不同的时间跨度。
只需设置一个计划,每5分钟复制一次文件即可。如果您使用PowerShell或批处理文件来执行此操作都没有关系。复制时,当然会在目的地中给它一个新名称。
$TimeStamp = (Get-Date).ToString('mmddyyyhhmmss')
Copy-Item -Path 'D:\Game\GameFileName' -Destination "D:\Game\Backup\$(GameFileName)_$(TimeStamp).bak"