Powershell 检查文件是否已被移动?

Powershell 检查文件是否已被移动?,powershell,file,Powershell,File,所以现在我有一个程序,可以将文件从一个文件夹自动移动到另一个文件夹,只移动一次。 因此,如果该文件再次进入该文件夹,则不应移动该文件。应用程序每30分钟执行一次。所以现在我要做的是,如果LastWriteTime超过30分钟,不要移动它 # Check if file is older than 30 minutes $olderthan = @(Get-ChildItem -Path $src\$_.pdf | ? { $_.LastWriteTime -ge $date} -ov older

所以现在我有一个程序,可以将文件从一个文件夹自动移动到另一个文件夹,只移动一次。 因此,如果该文件再次进入该文件夹,则不应移动该文件。应用程序每30分钟执行一次。所以现在我要做的是,如果LastWriteTime超过30分钟,不要移动它

# Check if file is older than 30 minutes
$olderthan = @(Get-ChildItem -Path $src\$_.pdf | ? { $_.LastWriteTime -ge $date} -ov olderthan)
 
if (-not $olderthan){      
 
    # If it's older than 30 minutes, move no file
    $timesall = @(Get-ChildItem -Path $src\$_.pdf | Select-Object -Property BaseName)
    write-LogRecord -Typ WARNING "'$($timesall.BaseName)' file(s) are not being moved because they're older than 30 minutes"   
    $timesall = 0 
 
} else {

 #Move File

}
是的,它是有效的,但是还有其他更好的方法吗


提前谢谢

检查文件属性的另一种方法是进行文件跟踪。我假设这些文件不会继续存在于目标文件夹中(否则,您可以使用
TEST-PATH
在移动之前查看文件是否存在)

对我来说,最直接的跟踪系统是创建一个并行文件夹,您可以将同名文件放入其中。假设文件尚未提交,然后将A.txt复制到目标中,并在跟踪路径中创建A.txt(可能是空文件,也可能不是,请参见下文)。现在测试的目的是查看跟踪文件夹中是否存在相同的命名文件

注意:此方法允许您通过将文件从跟踪文件夹中删除来轻松重新处理文件。它也只在调度程序因任何原因未启动时工作

如果您需要更复杂的选项,如容纳已更改的文件,您可以在跟踪文件中存储指纹信息,如大小和散列。作为测试的一部分,您的测试也可以检查这些


最后,在某个时候,你可能会想要整理你的跟踪文件夹。使用LastWriteTime并删除过去(比如1个月)的所有内容(或者如果适合您的情况的话)可以防止跟踪文件夹变得太大。您可以在每次传输后运行,也可以在单独的时间表上运行。

您可以描述文件夹或给出一个文件树示例吗?