![Win Server 2012 PowerShell 4 脚本用于复制、重命名和触摸文件](https://linux22.com/image/1458013/Win%20Server%202012%20PowerShell%204%20%E8%84%9A%E6%9C%AC%E7%94%A8%E4%BA%8E%E5%A4%8D%E5%88%B6%E3%80%81%E9%87%8D%E5%91%BD%E5%90%8D%E5%92%8C%E8%A7%A6%E6%91%B8%E6%96%87%E4%BB%B6.png)
我创建了一个 PowerShell 4 脚本来备份 Outlook 2013 VbaProject.OTM 文件,方法是将其从生产目录复制到备份目录,并添加当前日期和时间的文件名后缀。复制的版本具有 VbaProject.OTM 首次保存时的修改日期和时间。我花了一上午的时间研究帖子,试图弄清楚如何将备份文件的修改日期属性更改为当前日期和时间,但我尝试的所有方法都以错误消息结束。有没有简单的方法可以实现这一点?
# FD_VBA_Backup.ps1
$date = get-date -format "MMddyyyy HHmm"
$fnft = "VbaProject - " + $date + ".OTM"
$source = "C:\Users\OCCReportManager\AppData\Roaming\Microsoft\Outlook\VbaProject.OTM"
$dest = "D:\FD Automation VBA Backups\" + $fnft
copy-item $source $dest # results in eg. "VbaProject - 07202015 0936.OTM"
有一个类似的问题,关于如何创建一个空文件并设置日期属性。我的问题的解决方案也只有一行,但不容易找到。另一个问题的标题使得解决方案无法在其中找到,因为我需要更改现有文件的日期,而不是创建新文件。参考: 相当于使用 Linux 的 `touch` 用 PowerShell 创建一个空文件吗?。
答案1
感谢@DavidPostill:
# FD_VBA_Backup.ps1
$date = get-date -format "MMddyyyy HHmm"
$fnft = "VbaProject - " + $date + ".OTM"
$source = "C:\Users\OCCReportManager\AppData\Roaming\Microsoft\Outlook\VbaProject.OTM"
$dest = "D:\FD Automation VBA Backups\" + $fnft
copy-item $source $dest # results in eg. "VbaProject - 07202015 0936.OTM"
(Get-ChildItem $dest).LastWriteTime = Get-Date