PowerShell触摸所有比更新的文件


2

我在ServerFault上发现以下问题:

Windows递归触摸命令

其中部分回答了我的问题:

Windows递归触摸命令

但是,我想触摸2013年1月31日(31/01/13)之后的所有文件(在根目录和子文件夹中(递归))。我将如何去做呢?

我有可用的PowerShell 2。

更新:

我发现此脚本获取了我所需要的所有文件:

Get-ChildItem C:\path\to\files -recurse | Where-Object { $_.LastWriteTime -ge [DateTime] "1/31/2013 9:00AM" }

但是我不确定如何将其与“ touch”命令结合使用:

(ls file).LastWriteTime = DateTime.now

以下内容似乎合乎逻辑,但我无法对其进行测试,因为备份文件会破坏文件的修改日期/时间:

(Get-ChildItem C:\path\to\files -recurse | Where-Object { $_.LastWriteTime -ge [DateTime] "1/31/2013 9:00AM" }).LastWriteTime = DateTime.now

那么,这行得通吗?

Answers:


3

Powershell使用Unix touch对我来说似乎很愚蠢。

相反,只需使用本机Powershell cmdlet。

本文介绍了它:

实质上:

Get-ChildItem -Path $youFolder -Recurse | Foreach-Object {
    if ($_.LastWriteTime -ge [DateTime] "1/31/2013 9:00AM")
    { 
        $_.LastWriteTime = Get-Date
    }
}

应该做到的。


抱歉,但我认为您没有理会我的问题。我想过滤比给定日期新的文件,然后将其时间戳更改为现在。我都有两者的代码,但不确定如何将它们组合在一起。到目前为止,感谢您的帮助。
atwright147

抱歉,忘记了检查。现在添加。这本质上是做你问什么,但使用if语句,而不是在那里对象的
奥斯汀牛逼法国

辉煌!有用。我必须删除所有新行才能从命令行运行它,但它确实有效。
atwright147

是的,我以脚本形式获取它,因此要从控制台运行它,必须将其移至单行形式。
法国的Austin T
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.