找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: wjgyz740526

[分享] 我也来发一个右键复制路径和文件名的东西

  [复制链接]
发表于 2026-4-15 10:16:00 | 显示全部楼层
本帖最后由 axiang117 于 2026-4-15 10:17 编辑

根本不用那么麻烦,不需要任何外置依赖,几行批处理搞定:


::快捷复制文件或文件夹的路径,以管理员身份执行以下命令即可

reg add "HKCR\AllFilesystemObjects\shell\CopyAsPath" /f /v "MUIVerb" /t REG_SZ /d "@shell32.dll,-30329"
reg add "HKCR\AllFilesystemObjects\shell\CopyAsPath" /f /v "Icon" /t REG_SZ /d "imageres.dll,-5302"
reg add "HKCR\AllFilesystemObjects\shell\CopyAsPath" /f /v "DelegateExecute" /t REG_SZ /d ""
reg add "HKCR\AllFilesystemObjects\shell\CopyAsPath\Command" /f /ve /t REG_SZ /d "mshta vbscript:clipboarddata.setdata(\"text\",Replace(\"%1\",\"\\\",\"/\"))(close)"


点评

这个依赖vbs有缺陷,有时候无法获取,且很多pe是阉割掉vbs的,如果只要复制路径(带引号)可以直接导入下面的注册表,它就是系统按shift出现的菜单 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\All  详情 回复 发表于 2026-4-15 12:14
这个也行  详情 回复 发表于 2026-4-15 11:04
回复

使用道具 举报

发表于 2026-4-15 10:45:06 | 显示全部楼层
有没有引号不是重点,楼主用的shell扩展右键菜单的方式,最大的好处是支持多选
不用shell扩展,就不支持多选,多选执行,相当于多次执行命令,剪贴板的内容只会有一个文件的路径。
回复

使用道具 举报

发表于 2026-4-15 11:04:36 | 显示全部楼层
axiang117 发表于 2026-4-15 10:16
根本不用那么麻烦,不需要任何外置依赖,几行批处理搞定:

这个也行
回复

使用道具 举报

发表于 2026-4-15 11:10:30 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2026-4-15 11:40:00 | 显示全部楼层
感谢分享,不错
回复

使用道具 举报

 楼主| 发表于 2026-4-15 12:14:15 来自手机 | 显示全部楼层
axiang117 发表于 2026-4-15 10:16
根本不用那么麻烦,不需要任何外置依赖,几行批处理搞定:



这个依赖vbs有缺陷,有时候无法获取,且很多pe是阉割掉vbs的,如果只要复制路径(带引号)可以直接导入下面的注册表,它就是系统按shift出现的菜单


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Allfilesystemobjects\shell\windows.copyaspath]
"CanonicalName"="{707C7BC6-685A-4A4D-A275-3966A5A3EFAA}"
"CommandStateHandler"="{3B1599F9-E00A-4BBF-AD3E-B3F99FA87779}"
"CommandStateSync"=""
"Description"="@shell32.dll,-30336"
"Icon"="imageres.dll,-5302"
"InvokeCommandOnSelection"=dword:00000001
"MUIVerb"="@shell32.dll,-30329"
"VerbHandler"="{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}"
"VerbName"="copyaspath"
回复

使用道具 举报

发表于 2026-4-15 16:42:55 | 显示全部楼层
本帖最后由 redyear2026 于 2026-4-15 16:52 编辑

    处理资源管理器中的单选结果,或者是直接拖拽给脚本,或者是在注册表右键菜单中直接挂码操作,通常没有存取剪贴板这个中间环节。
    但要处理多选结果,ms 提供了两种方法,一是通过 '存取剪贴板' 这个中间环节,二是通过 'sendTo(发送到)' 右键功能,直接将多选结果作为命令行参数传送给 *.bat, *.cmd, *.vbs, *.js, *.hta, *.ps1 等脚本或 *.exe 等可执行程序。
    win8-11 系统均在资源管理器主页菜单内置了 '复制路径' 或 '复制文件地址' 选项,直接点击即可。多选结果的剪贴板格式为分行且每行用双引号包裹,此举是为保持每个路径文件名的完整性,否则后续若直接用于命令行参数时,可能会因其中包含空格或 &^() 等特殊字符而出错。
    winXP-11 系统均在资源管理器右键菜单中内置了 '发送到' 选项,以下的批处代码是一个最简单的用法示例,目的是将多选结果分行复制到剪贴板,且无双引号包裹。但是用批处代码接收 sendTo 传参有两个短处,一是要严禁每个未含空格路径文件名不能再有 &^() 等特殊字符,二是代码运行时会有黑框闪屏。

   复制选择集到剪贴板.bat
  1. @(for %%i in (%*) do @echo,%%i)|clip.exe
复制代码

    以上代码须保存到 "%AppData%\Microsoft\Windows\SendTo\" 目录下,例如 复制选择集到剪贴板.bat,其后可在右键 '发送到' 菜单中出现 复制选择集到剪贴板.bat 选项,如果在该目录中保存的是其快捷方式,如 复制选择集到剪贴板.lnk,则在右键 '发送到' 菜单中出现的选项名可隐藏其扩展名。
    如果系统支持 vbs, jscript,powershell 则可用其替换以上的批处代码文件,即可弥补上述两个短处,给一个示例代码如下(采用 jscript),其他具体用法同上(亦可参见 https://bbs.wuyou.net/forum.php? ... =450856&pid=6106344 18楼)。

    复制选择集到剪贴板.js
  1. v=WSH.arguments, ws=WSH.createObject('WScript.shell');
  2. for (s='',n=0,l=v.length; n<l; n++) s+=v(n).replace(/\"/g,'')+'\r\n';
  3. fso=WSH.createObject('Scripting.FileSystemObject');
  4. tF=ws.expandEnvironmentStrings('%temp%')+'\\_.clipT';
  5. fp=fso.OpenTextFile(tF,2,true), fp.write(s.slice(0,-2)), fp.close();
  6. ws.run('cmd.exe /c clip.exe<'+tF+'&&del/q '+tF, 0, false), WSH.quit();
复制代码
回复

使用道具 举报

发表于 2026-4-15 16:53:20 | 显示全部楼层
厉害,多谢老大的付出
回复

使用道具 举报

发表于 2026-4-15 17:08:10 | 显示全部楼层
好工具,非常实用,感谢分享
回复

使用道具 举报

发表于 2026-4-15 17:25:25 | 显示全部楼层
好工具,感谢分享!
回复

使用道具 举报

发表于 2026-4-15 23:44:09 | 显示全部楼层
好工具!!!
回复

使用道具 举报

发表于 2026-4-17 15:25:36 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-4-17 17:13:10 | 显示全部楼层
学习一下啊
回复

使用道具 举报

发表于 2026-4-22 09:17:29 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-4-22 09:18:41 | 显示全部楼层
好工具,感谢分享!
回复

使用道具 举报

发表于 2026-4-22 12:41:30 | 显示全部楼层
感谢分享,这样方便了好多
回复

使用道具 举报

发表于 2026-4-22 21:43:49 | 显示全部楼层
实用的小程序,谢谢分享!!
回复

使用道具 举报

发表于 2026-4-22 23:13:15 | 显示全部楼层
试一试 谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-4-30 04:01

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表