我在一台远程电脑上有一个文件夹,里面有监控摄像头的录像。我只想在*.mp4文件中搜索在2300和0600之间创建的文件。代码:
$root = "F:\ispy\video\SWVL"
(Get-ChildItem -Path $root) | Where-Object {$_.lastWriteTime.TimeOfDay.Hours -gt 23 -or $_.LastWriteTime.TimeOfDay.Hours -lt 06} | ls | Out-GridView -PassThru 完美地做到了这一点,并将输出(文件列表)传递给PowerShell网格视图...但是,我需要输出来显示Windows资源管理器中的文件。
我实际上是在尝试使用PowerShell脚本作为高级搜索过滤器。
希望有人能有点子。最终,我计划使用它作为一个流-以某种方式-在电力自动化和电力应用程序……但需要破解这第一部分。
谢谢,Gregg AZ
发布于 2021-05-10 13:17:24
您的用例无效。Windows资源管理器
在您的脚本中,您可以这样做。(删除对Out-GridView的调用,因为您的最终结果不需要它)
# find those files
Get-ChildItem -Path 'F:\ispy\video\SWVL' |
Where-Object {
$PSItem.lastWriteTime.TimeOfDay.Hours -gt 23 -or
$PSItem.LastWriteTime.TimeOfDay.Hours -lt 06} |
# copy them to a temp location
Copy-Item -Destination 'SomeTempPath' -Verbose
# open explorer in that location
Invoke-Item -Path 'SomeTempPath'..。然后在完成后删除该位置。
特定于Windows资源管理器的搜索/筛选只能在Windows资源管理器中进行。因此,这意味着您只能搜索以获取特定属性,然后使用GUI自动化将其发送到Windows资源管理器搜索框。
否则,只需跳过脚本并了解这一点,以避免使您要做的事情过于复杂。
在Windows资源管理器中,您可以使用date:关键字在文件资源管理器中按日期筛选文件。您可以使用此关键字查找在特定日期之前、当天或之后创建的文件。您可以使用“>”和“<”符号查找在给定日期之后或之前创建的文件。“>=”和“<=”在这里也适用。虽然您可以手动键入日期,但文件资源管理器提供了一个简单的日历,每次您在搜索框中键入date :时都会显示该日历。

在脚本中,您必须复制上述代码。从而捕获搜索中的日期,打开Windows Explorer并使用SendKeys或AutoIT选择搜索框并粘贴信息,然后发送enter。
根据我对弹出式日历的评论进行更新。您可以在Windows资源管理器中执行此操作,以按日期/日期范围进行筛选
手动输入,当然,您可以通过SendKeys或AutoIT让图形用户界面自动执行。

单击任意日期列上的向下箭头。

在最新WinOS版本的内置Windows Sandbox中,弹出窗口仍然可以在Windows Explorer搜索框中使用。

..。但不是在其他主机系统上。
根据我们最后的评论进行更新...,如果你真的想发送到Explore serachbox,那么这个杂乱无章的东西可以做到,...
Start-Process -FilePath 'Explorer' 'd:\temp'
Add-Type -AssemblyName System.Windows.Forms
Start-Sleep -Seconds 2
[System.Windows.Forms.SendKeys]::SendWait('+{TAB}'*2)
[System.Windows.Forms.SendKeys]::SendWait('date: 04-Apr-20..11-Jan-21')
Start-Sleep -Seconds 1
[System.Windows.Forms.SendKeys]::SendWait('{Enter}')..。但是warning SendKeys是古怪的,计时的,等等,有时有效,有时无效。
https://stackoverflow.com/questions/67464112
复制相似问题