powershell - 使用 PowerShell 每 5 分钟创建一个文件的备份副本
问题描述
有一款游戏使用一个存档。该保存文件每隔几秒钟写入一次。我想要一个脚本每 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 会产生一堆文件,但随后什么也没有发生。
解决方案
如果这个游戏正在写一个文件并且只写一个文件。意味着每隔几秒钟更换一次,然后查看那个时间戳是没有意义的,因为它永远不会达到不同的时间跨度。
只需设置一个计划以每 5 分钟复制一次文件。如果您使用 PowerShell 或批处理文件来执行此操作,则无关紧要。当你复制时,当然要在目的地给它一个新的名字。
$TimeStamp = (Get-Date).ToString('mmddyyyhhmmss')
Copy-Item -Path 'D:\Game\GameFileName' -Destination "D:\Game\Backup\$(GameFileName)_$(TimeStamp).bak"
推荐阅读
- ruby-on-rails - Rails 将问题和答案传递给调查视图
- netlogo - 如何在 NetLogo 中选择相邻的补丁来制作一个实心块?
- windows - docker-compose 3.8 中的 network_mode 主机(再次)不工作(在 Windows 中)
- twilio - Twilio 在表单提交时呼叫多个代理
- javascript - Ant Design 选择标签无数据重命名
- sql - 突触顶级父层次结构
- php - Myqsl 警告:mysqli_connect(): (HY000/2002): No such file or directory in
- swagger - Swagger 页面上的“显示/隐藏”“列表操作”和“扩展操作”
- firebase - Firebase 身份验证:我应该更喜欢哪种身份验证?
- c++ - 通过 ssh 使用 gdbserver 进行远程调试失败,远程连接关闭