小编Dev*_*ath的帖子

将数据从一个 NTFS 驱动器移动到另一个 NTFS 驱动器时保留所有时间戳

我想将包含许多子文件夹和文件 xe2\x80\x94 的文件夹 \xe2\x80\x94 从一个 NTFS 驱动器移动到另一个 NTFS 驱动器,但我需要从新目标驱动器上的原始源保留元数据日期和时间戳属性值。

\n\n

问题:我注意到,当我完成任务的各种复制操作时,“创建日期”、“上次修改日期”等的时间戳值不会保留在至少包含一个文件夹/文件的文件夹中。我还注意到,移动的空文件夹最终会自动更改其创建日期,以与其余文件夹以及在新驱动器上的空文件夹中放置某些内容时保持一致。

\n\n

在此输入图像描述

\n\n

我的努力:我已经尝试了几乎所有可以通过 Google 找到的关于此主题的内容(Robocopy、Richcopy、Microsoft SyncToy、Total Commander、Free Commander...以及很多很多...)\xe2\x80\x94all产生相对相同的结果。没有任何东西能够对被移动的源进行全面、100% 的保存。Robocopy 和 Richcopy(以及“Commanders”)很接近,但我仍然遇到问题(在所有情况下),即创建日期被错误地“保留”,最后修改的日期根本无法保留,等等。唯一真正的承诺我还看到了除此之外的……Powershell。

\n\n
\n\n

我的 PowerShell 之旅

\n\n

我偶然发现了这个链接:

\n\n

/sf/ask/2446633801/

\n\n

...使用这个脚本:

\n\n
function Move-FileWithTimestamp {\n[cmdletbinding()]\nparam(\n[Parameter(Mandatory=$true,Position=0)][string]$Path,\n[Parameter(Mandatory=$true,Position=1)][string]$Destination\n)\n\n$origLastAccessTime = ( Get-Item $Path ).LastAccessTime\n$fileName = ( Get-Item $Path ).Name\nMove-Item -Path $Path -Destination $Destination\n$(Get-Item ($Destination+\'\\\'+$fileName)).LastAccessTime = \n$origLastAccessTime\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

上面线程中的脚本仍然没有与我列出的程序执行任何不同,但至少在这里,我有一个平台,我可以在其中更改/自定义/调整一些东西以满足我的确切需求。因此,我用我在这个领域有限的知识做了我能做的(即用“.CreationTime”更改“.LastAccessTime”,用“LastWriteTime”交换“.LastAccessTime”等),并最终相对接近保留所有时间戳(我相信在某一时刻,我已将上次修改、上次访问和上次保存保存在我的测试文件夹中)。但是,我似乎仍然无法正确保留创建日期,并且我能够用其他所有内容完成的工作显然仅适用于单独的测试文件夹(没有其他内容,例如其中的子文件夹......但这就是只是因为我不知道如何在主目录之外编写这些内容的脚本)。

\n\n

当谈到这个问题时,我感到很困惑,所以我想知道是否有人想解决这个问题。

\n\n

更新:这就是我现在所在的位置:

\n\n
function Move-FileWithTimestamp {\n[cmdletbinding()]\nparam(\n[Parameter(Mandatory=$true,Position=0)][string]$Path,\n[Parameter(Mandatory=$true,Position=1)][string]$Destination\n)\n$origCreationTime = ( Get-Item $Path ).CreationTime\n$origLastWriteTime = ( Get-Item $Path ).LastWriteTime\n$origLastAccessTime = ( Get-Item $Path …
Run Code Online (Sandbox Code Playgroud)

powershell file-transfer

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

file-transfer ×1

powershell ×1