【发布时间】:2016-01-22 16:50:47
【问题描述】:
我正在使用 PowerShell Move-Item 移动一些文件夹及其所有内容,但是当我移动文件夹时,其修改日期是当前日期而不是原始日期。如何在不更改上次修改日期的情况下移动文件夹。
【问题讨论】:
-
是什么引起了这个问题?这是子目录的标准行为。
标签: powershell
我正在使用 PowerShell Move-Item 移动一些文件夹及其所有内容,但是当我移动文件夹时,其修改日期是当前日期而不是原始日期。如何在不更改上次修改日期的情况下移动文件夹。
【问题讨论】:
标签: powershell
这是一个 powershell 函数,它可以满足您的要求...它绝对不会进行完整性检查,所以请谨慎购买...
function Move-FileWithTimestamp {
[cmdletbinding()]
param(
[Parameter(Mandatory=$true,Position=0)][string]$Path,
[Parameter(Mandatory=$true,Position=1)][string]$Destination
)
$origLastAccessTime = ( Get-Item $Path ).LastAccessTime
$fileName = ( Get-Item $Path ).Name
Move-Item -Path $Path -Destination $Destination
$(Get-Item ($Destination+'\'+$fileName)).LastAccessTime = $origLastAccessTime
}
运行加载后,您可以执行以下操作:
Move-FileWithTimestamp c:\foo.txt c:\newFolder
【讨论】:
在 Windows 中没有简单的方法可以做到这一点,但您可以使用 robocopy。有一个选项可以复制修改后的日期属性。 在 robocopy (robocopy /?) 上运行帮助并查找 /COPY 和 /COPYALL 选项。 这仅适用于 Vista 和更新的 Windows 版本。
【讨论】: