gpt4 book ai didi

powershell - Powershell:将“上次修改时间”与“特定日期”进行比较,并用正确的日期替换

转载 作者:行者123 更新时间:2023-12-03 01:29:26 25 4
gpt4 key购买 nike

我对Powershell还是很陌生,所以请多多包涵。

我有2个几乎相同的目录。旧目录中的文件和文件夹被复制到新目录中。但是,在此转移过程中,上次修改日期发生了变化。新目录中的文件和文件夹的上次修改日期不正确(例如:今天)。

与其重新执行转移过程(这将花费很长时间),我想在Powershell中编写一些内容,以比较两个目录的最后修改日期并更正新目录中的日期。

我还要首先检查自文件传输以来是否已修改文件/文件夹。没有理由更改这些文件的日期。

通过环顾四周和谷歌搜索发现:
Link1 Link2 Link 3 Link 4

我知道我可以使用以下命令获取文件的最后修改日期:

(Get-Item $filename).LastWriteTime

其中$ filename是文件目录。

我还遇到了以下问题:
dir $directory | ? {$_.lastwritetime -gt "6/1/19" -AND $_.lastwritetime -lt "12/30/19"}

我知道我可以获得有关2个日期之间修改的文件的信息。为此,我可以进行调整,以便可以使用“小于(-lt)”来检查在特定日期后未修改的文件。
dir $directory | ? {$_.lastwritetime -lt `12/13/19'}

这实现了我的目标之一。我有一种方法可以检查文件是否已被修改超过某个值。

我看到这是为了更改值lastwritetime
$folder = Get-Item C:\folder1
$folder.LastWriteTime = (Get-Date)

并意识到这仅仅是
(Get-Item $filename).LastWriteTime = (Get-Date)

我可以对其进行修改以满足我替换旧文件正确时间的新文件的上次写入时间的目标:
(Get-Item $filename).LastWriteTime = (Get-Item $filename2).LastWriteTime

我想我正在挣扎的是将它们放在一起。我知道如何通过添加“recurse”参数来遍历文件/文件夹中的复制项甚至Get-Childitem。但是我很难绕过头来递归地浏览每个目录以更改日期。

谢谢您的帮助。

最佳答案

到目前为止的工作做得很好。

只需将您拥有的内容放入foreach语句中即可。

Foreach($item in (gci 'C:\Users\usernamehere\Desktop\folder123' -recurse)){

(Get-Item $item.FullName).LastWriteTime = (Get-Item "C:\Users\usernamehere\Desktop\folderabc\RandomFile.txt").LastWriteTime

}

我们将带有 Get-Childitem标志的 -recurse命令包装到括号中,以便该命令自己执行并成为foreach命令遍历的集合。 $ item是循环中的当前项目。我们将要使用 .FullName属性来了解当前项目文件的完整路径。这样,您将一起使用 $item.FullName设置日期。

关于powershell - Powershell:将“上次修改时间”与“特定日期”进行比较,并用正确的日期替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59724550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com