You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Send To菜单选中的文件名传递给PowerShell脚本

PowerShell脚本接收SendTo菜单选中文件的实现方法

核心原理

当你在资源管理器选中文件、通过「发送到」菜单触发快捷方式时,Windows会自动将所有选中文件的完整绝对路径作为位置参数,按顺序传递给快捷方式指向的目标程序,脚本可以直接读取这些参数获取选中的文件列表,不需要额外调用COM对象或者读取注册表。

步骤1:修改PowerShell脚本,添加参数接收逻辑

在脚本最开头添加参数接收块,替换原有遍历当前目录的逻辑即可,参考代码如下:

# 接收系统传递过来的选中文件路径列表
param(
    [Parameter(ValueFromRemainingArguments = $true)]
    [string[]]$SelectedFiles
)

# 异常处理:直接双击脚本运行时无传入文件,直接提示退出
if (-not $SelectedFiles) {
    Write-Host "请通过右键菜单-发送到 触发本脚本"
    timeout /t 2 >nul
    exit
}

# 原有逻辑:提示输入搜索关键词
$searchKey = Read-Host "请输入要检索的字符串"

# 遍历选中的文件执行检索
foreach ($file in $SelectedFiles) {
    # 过滤非.log/.txt格式的误选文件
    $fileExt = [System.IO.Path]::GetExtension($file).ToLower()
    if ($fileExt -notin '.log','.txt') {
        Write-Warning "跳过非文本/日志文件:$file"
        continue
    }
    Write-Host "`n===== 检索文件:$file =====" -ForegroundColor Cyan
    # 替换为你原有的检索逻辑即可,示例用Select-String做匹配
    Select-String -Path $file -Pattern $searchKey -SimpleMatch | ForEach-Object {
        Write-Host "行号$($_.LineNumber):$($_.Line.Trim())"
    }
}

Read-Host "`n检索完成,按回车退出"

步骤2:修正SendTo快捷方式的配置(最容易出错的环节)

如果快捷方式配置错误,参数不会正常传递给脚本,按以下步骤检查:

  • 按Win+R组合键,输入shell:SendTo后回车,直接打开「发送到」菜单对应的文件夹
  • 找到你之前创建的脚本快捷方式,右键打开「属性」面板
  • 「目标」输入框必须按以下格式填写,不能只填脚本路径:
    powershell.exe -ExecutionPolicy Bypass -File "你的PS1脚本的完整绝对路径"
    

    注意:-File参数必须放在脚本路径前面,不要在命令末尾手动加任何其他参数,Windows会自动把选中文件的路径追加在命令后面

  • 「起始位置」输入框留空即可,不需要填写内容
  • 保存配置后即可正常使用

注意事项

  • 支持同时选中多个文件触发,所有选中的文件路径都会自动传入$SelectedFiles数组
  • 路径/文件名包含空格、中文等特殊字符时不需要额外处理,Windows会自动做转义,PowerShell可正常识别
  • 原有检索逻辑不需要改动,只需要把原来遍历当前目录获取文件的代码,替换为遍历$SelectedFiles数组即可

内容的提问来源于stack exchange,提问作者Scott Chadwick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:48:04