powershell 监控Windows资源管理器选中的文件夹及文件

powershell 监控Windows资源管理器选中的文件夹及文件

01 前言

在整理大量文件的时候,有些文件可能需要根据内容做不同的处理,比如,移动到另外一个目录中。那么如何判断当前在文件资源管理器中选择了哪些文件呢?决定用powershell试试,找了一些资料之后,发现使用系统自带的shdocvw.dll可以做到,记录一下。

02 正文

shdocvw.dll一般位于C:\Windows\System32下,但是不能直接使用,需要转换一下。
转换过程略,下载链接在文章顶部。

代码如下:

<#

监控Windows资源管理器选择的文件

by hokis
20240506_164639

#>

[void][System.Reflection.Assembly]::LoadFile($PSScriptRoot+"\shdocvw.NET.dll")

$wins = New-Object shdocvw.NET.ShellWindowsClass
$cnt = 1
do
{
    Write-Host ('====== times:' + $cnt+' ======')
    foreach($w in $wins){
        $fn = [System.IO.Path]::GetFileNameWithoutExtension($w.FullName).ToLower()
        if($fn -in @('explorer','资源管理器')){
            foreach($item in $w.Document.SelectedItems()){
                #名称,全路径
                Write-Host ('file name:{0},full name:{1}' -f $item.Name,$item.Path)
            }
        }
    }
    $cnt++
    if($cnt -gt 10) {
        break
    }
    sleep -Seconds 3
}
while ($true)

Write-Host 'Done...'

脚本使用注意:

  • powershell 5.1下测试通过
  • 下载对应的dll(在文章顶部),放在跟脚本同一路径下。
  • 代码另存为 run.ps1,右键,“使用 PowerShell 运行”。弹出界面后,点“确定”按钮注册全局热键,点“取消”可以取消热键。
  • 如果不能执行脚本,提示“无法加载文件 C:\XXX\run.ps1,因为在此系统上禁止运行脚本……”。请先修改powershell执行策略(参考此处

03 后记

配合【全局热键】使用,效率一下就提高了。

欢迎留言交流~
------END------

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值