Powershell 检查文件是否已被移动?
所以现在我有一个程序,可以将文件从一个文件夹自动移动到另一个文件夹,只移动一次。 因此,如果该文件再次进入该文件夹,则不应移动该文件。应用程序每30分钟执行一次。所以现在我要做的是,如果LastWriteTime超过30分钟,不要移动它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
# 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个月)的所有内容(或者如果适合您的情况的话)可以防止跟踪文件夹变得太大。您可以在每次传输后运行,也可以在单独的时间表上运行。您可以描述文件夹或给出一个文件树示例吗?