我要查找的文件显然存在
PS> Get-Item $Template|?{$_.LastWriteTime -gt $cutofftime}
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 9/10/2019 8:45 AM 1543608 Found.txt
但是,当我试图确定这样的存在时,我得到了错误。
PS> Test-Path $Template -NewerThan $cutofftime
False
这显然是由于时间而不是文件本身。
PS> Test-Path $Template
True
有人知道为什么吗?
万一重要:
$CutoffTime = (Get-Item OtherFile.txt).LastWriteTime
和
PS> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.16299.1146
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.16299.1146
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
答案 0 :(得分:2)
如果不是错字,那我就无法解释。如果$ template是正确的,它对我有用。
编辑:好的,如果$ template设置为'f * .txt',我确认该错误。可能必须运行两次。我认为通配符模式可能与其他文件匹配?你可以睡一觉。
echo hi > otherfile.txt
sleep 60
echo hi > found.txt # newer
$template = 'f*.txt'
$CutoffTime = (Get-Item OtherFile.txt).LastWriteTime
$CutoffTime
Get-Item $Template|?{$_.LastWriteTime -gt $cutofftime} | ft
Test-Path $Template -NewerThan $cutofftime # incorrectly false
Test-Path $Template
输出:
Friday, September 13, 2019 10:30:13 AM
Directory: C:\users\admin\foo
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 9/13/2019 10:31 AM 4 found.txt
False
True
答案 1 :(得分:0)
至少在我看来,LastWriteTime和-NewerThan值在进行比较之前似乎都经过了一些舍入。我还没有进行足够的调查来确切地知道多少,但是当两个值之间的时间很短(2分钟或更短)时,我看到的效果更有可能发生。相差只有几秒钟,它总是会发生。至少在我的机器上。