我正在编写一个脚本来测试某个文件当前是否在目录中,如果是,它将用于脚本中的下一个操作.但是,此脚本将作为计划任务运行,我不希望此步骤多次出现.在我的脑海中,最好的方法是让Test-path Command工作如下:
Test-Path C:\Path\File.zip | where {$_.LastWriteTime -lt (Get-Date).AddMinutes(-30)}
Run Code Online (Sandbox Code Playgroud)
这不符合我的想法.有没有办法检查文件是否存在并在If语句中具有该文件?就像是:
if(test-path C:\Path\File.zip | where {$_.LastWriteTime -lt (Get-Date).AddMinutes(-30)}) {execute scriptblock}
Run Code Online (Sandbox Code Playgroud)
或者,如果Get-Childitem有一种方法可以在if语句中返回bool,我可以使用它吗?非常感谢.
问题是Test-Pathcmdlet返回boolean($True或$False)而不是FileInfo对象.因此,返回值没有LastWriteTime属性,这就是您的代码无法工作的原因.
正如您所想的那样,您可以使用以下事实:PowerShell中的if语句将空列表和$NULL对象评估为false,而具有项目或正确对象引用(非null)的列表评估为true.因此,您可以将其更改为:
if (Get-ChildItem C:\Path\File.zip | Where { $PSItem.LastWriteTime -gt (Get-Date).AddMinutes(-30))
{
# File newer than half an hour exists
}
else
{
# No file newer than half an hour exists
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
506 次 |
| 最近记录: |