如何在AutoHotkey V2.x中获取当前选中的文件/文件夹路径及文件名?
AutoHotkey V2 获取Windows选中文件/文件夹路径与文件名
下面是针对AutoHotkey V2版本的实用脚本,支持Windows 10/11系统,可获取单个或多个选中文件/文件夹的完整路径、文件名,还能自定义快捷键:
完整功能脚本(弹窗显示详细信息)
#Requires AutoHotkey v2.0 ^+c:: ; 绑定快捷键 Ctrl+Shift+C,可自行修改为其他组合 ; 保存原有剪贴板内容,避免覆盖用户数据 original_clip := ClipboardAll() A_Clipboard := "" ; 模拟按下Ctrl+C,触发系统复制选中文件的操作 Send "^c" ; 等待剪贴板获取内容,超时2秒 if ClipWait(2) { ; 从剪贴板提取文件路径列表(V2专属方法) file_list := ClipboardGet("File") if file_list.Length { output := "" for index, full_path in file_list { ; 拆分文件夹路径与文件名 file_name := StrSplit(full_path, "\").Pop() folder_path := SubStr(full_path, 1, StrLen(full_path) - StrLen(file_name) - 1) ; 拼接输出内容 output .= "第" index "项:`n" output .= "文件夹路径:" folder_path "`n" output .= "文件名:" file_name "`n`n" } ; 弹窗显示结果 MsgBox(output, "选中文件/文件夹信息", 0x40000) } else { MsgBox("未检测到选中的文件或文件夹", "提示", 0x10) } } else { MsgBox("获取剪贴板内容超时", "错误", 0x10) } ; 恢复原有剪贴板内容 A_Clipboard := original_clip return
简化版(直接复制路径到剪贴板)
如果只需要快速复制所有选中文件的路径到剪贴板,可使用这个更轻量的版本:
#Requires AutoHotkey v2.0 ^+c:: original_clip := ClipboardAll() A_Clipboard := "" Send "^c" if ClipWait(2) { file_list := ClipboardGet("File") if file_list.Length { ; 将所有路径按换行拼接,复制到剪贴板 A_Clipboard := StrJoin(file_list, "`n") ; 短暂提示操作成功 ToolTip("已复制" file_list.Length "个文件路径到剪贴板") SetTimer(() => ToolTip(), -1500) } else { ToolTip("未选中任何文件/文件夹") SetTimer(() => ToolTip(), -1500) } } A_Clipboard := original_clip return
关键说明
#Requires AutoHotkey v2.0:强制脚本在V2环境运行,避免V1兼容性问题ClipboardGet("File"):V2新增的方法,直接从剪贴板提取文件路径数组,无需像V1那样解析复杂格式- 脚本会自动保存并恢复原有剪贴板内容,不会干扰用户之前的剪贴板数据
- 快捷键可自行修改,比如把
^+c::改成!c::表示Alt+C
内容的提问来源于stack exchange,提问作者ronny
相关产品推荐
相关产品推荐

