【问题标题】:Powershell - checking for new filesPowershell - 检查新文件
【发布时间】:2018-06-19 06:47:58
【问题描述】:

此代码似乎仅在创建“新”文件时才有效。似乎它不接受复制到文件夹中的文件,这是我需要的。我们有一个应用程序,它处理 .csv 文件并将它们放入我想每天通过计划任务监控的文件夹中。我可以尝试更改此代码中的任何内容吗?

Param (
[string]$Path = "C:\Users\MG\Desktop\ScanFolder"
)                                                                        
$File = Get-ChildItem $Path | Where { $_.LastWriteTime -ge (Get-Date).AddHours(-1) }                                                                           
If ( $File ) {                                                          
Write-Output "Error File Found"                                              
}                                                                         
else { Write-Output "Nothing Found" }

【问题讨论】:

  • 使用FileSystemWatcher 可能会有所帮助,因为它可以配置为监视文件夹(和子文件夹)的文件更改,包括复制的文件。
  • 文件拷贝到这个目录是做什么的?我使用 Copy-ItemLastWriteTime 与原始文件位置没有变化。 LastAccessTimeCreationTime 均已更新为当前时间。

标签: powershell powershell-4.0


【解决方案1】:

改为测试.CreationTime / .CreationTimeUtc 的值:

  • 对于新创建的文件,会反映创建时间。

  • 对于新复制文件,它将反映文件复制到文件夹的时间(即使该时间比文件的.LastWriteTime 值更新)。

应用于您的代码:

Param (
  [string] $Path = "C:\Users\MG\Desktop\ScanFolder"
)                                                                        

$file = Get-ChildItem $Path | Where { $_.CreationTime -ge (Get-Date).AddHours(-1) }                                                                           

If ($file) {                                                          
  "Error File Found"                                              
} else { 
  "Nothing Found" 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多