首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Powershell在Windows资源管理器中驱动高级搜索-如何将GridView输出到Windows资源管理器?

使用Powershell在Windows资源管理器中驱动高级搜索-如何将GridView输出到Windows资源管理器?
EN

Stack Overflow用户
提问于 2021-05-10 10:36:38
回答 1查看 75关注 0票数 0

我在一台远程电脑上有一个文件夹,里面有监控摄像头的录像。我只想在*.mp4文件中搜索在2300和0600之间创建的文件。代码:

代码语言:javascript
复制
$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

EN

回答 1

Stack Overflow用户

发布于 2021-05-10 13:17:24

您的用例无效。Windows资源管理器

在您的脚本中,您可以这样做。(删除对Out-GridView的调用,因为您的最终结果不需要它)

代码语言:javascript
复制
# 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,那么这个杂乱无章的东西可以做到,...

代码语言:javascript
复制
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是古怪的,计时的,等等,有时有效,有时无效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67464112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档