powershell - 获取日期范围内的文件不起作用 Powershell
问题描述
我尝试获取某个日期范围内的文件,并遵循一些主题以使其变得更好,但是....我不明白一件事....
我的问题:我搜索一个包含字符串的文件,但我有多个包含它的文件,所以我决定按日期范围过滤,因为我知道这个。这是我的代码:
$Datestart=" Start of date range "; ex : 20042020_1500
$Dateend=" End of date range "; ex : 20042020_1510
$MessageId="The string i want"; ex : 2015195558.22355@wsfrf1412
$Target="my repository"; ex : D:/Test\
$DateStartok = [DateTime]::ParseExact($Datestart, "ddMMyyyy_HHmm", [Globalization.CultureInfo]::InvariantCulture);
$DateEndok = [DateTime]::ParseExact($Dateend, "ddMMyyyy_HHmm", [Globalization.CultureInfo]::InvariantCulture);
Select-String -path $TargetDir*.txt -pattern $MessageId |
Where-Object { $_.CreationTime -gt $DateStartOk -AND $_.CreationTime -lt $DateEndOK };
我对这段代码的解释是:
在我指定的日期范围内返回包含我想要的字符串的文件。
此代码将使用变量,但我尝试使用真实信息来测试它: 结果是:此代码不返回任何结果。
我试试这个:
Select-String -path $TargetDir*.txt -pattern $MessageId |
Where-Object { $_.CreationTime -lt $DateEndOK };
该脚本将好文件返回给我。
我试试这个:
Select-String -path $TargetDir*.txt -pattern $MessageId |
Where-Object { $_.CreationTime -lt $DateStartOk };
脚本返回了相同的结果,所以它也可以工作......
对于我的示例,该文件是在 20/04/2020 的 15h05 创建的,我尝试使用范围 15h00--->15h10
在正常情况下,脚本必须在第一种情况下返回结果,但在第二种情况下则不...
我再次尝试使用与我的两个示例相同的代码,但使用 -gt 而不是 -lt,我对此没有任何结果....
你能帮助我吗 ?感谢你们 :)
解决方案
我会Get-ChildItem
先获取日期范围内的文件集合,然后使用Select-String
这些文件来查找您要查找的字符串。
像这样的东西:
$DateStart = Get-Date -Year 2020 -Month 4 -Day 20 -Hour 15 -Minute 0 -Second 0 # "Start of date range"
$DateEnd = Get-Date -Year 2020 -Month 4 -Day 20 -Hour 15 -Minute 10 -Second 0 # "End of date range"
$MessageId = '2015195558.22355@wsfrf1412' # "The string i want"
$Source = 'D:\Test' # "my repository"
# you may want to add the -Recurse switch here if the code should also look inside subfolders
Get-ChildItem -Path $Source -Filter '*.txt' -File |
Where-Object { $_.CreationTime -gt $DateStart -and $_.CreationTime -lt $DateEnd } |
Select-String -Pattern $MessageId -SimpleMatch |
Select-Object -ExpandProperty Path
另外,我认为您实际上想使用LastWriteTime
属性上的日期范围,而不是CreationTime
. LastWriteTime 是文件最后更新的日期。CreationTime 可能要老得多..
PS在您的代码中,您正在定义$Target
,但稍后您将使用未定义的变量$TargetDir
推荐阅读
- c - 使用iceast服务器开发网络电台监听客户端
- javascript - 如何在 PIXI.JS 的过滤器或片段着色器中更新时间统一?
- arrays - Mongo $projection,你能扁平化一个子文档数组吗?
- jquery - .outerHeight(); 获得十进制值?
- oracle - 我可以使用 Toad 连接到 Oracle Db,但使用 sqlplus 的连接不起作用。获取 TNS 超时错误
- flutter - Flutter app/build.gradle 错误但应用程序有效
- docker - 使用 Gitlab CI docker-in-docker 时如何修复 docker 容器中的“sh: tsc not found”错误
- php - 如何在循环开始时使用输出变量循环来处理我的重复事件?PHP
- sql - 如何根据包含最小值和最大值的表从另一个表中选择行
- javascript - 在 VSCode 的 NodeJs 调试器中使用“esm”