我有一个工具,我将其添加到 HKEY_CLASSES_ROOT 下的任何文件键的 shell 子键中,以便它出现在任何文件的右键菜单中(目录菜单中也有这个)。
[HKEY_CLASSES_ROOT\*\shell\PathToClipboard]
@="Path -> Clipboard"
[HKEY_CLASSES_ROOT\*\shell\PathToClipboard\command]
@="C:\\Program Files (x86)\\PathToClipboard.exe %1"
该工具只不过将给定的参数(文件路径)复制到剪贴板。
至少从 Win ME 开始,这种方法就一直有效(可能从那时起就重新编译了)。这种方法也适用于 win-7,但有一些怪癖:如果文件路径包含空格或任何其他非字母数字字符,则会缩短为 DOS 兼容名称。
例如:C:\PROGRA~2\PATHTO~1.EXE
有没有解决的办法?
如果我把"
路径放在%1
正确的位置,但 Windows 也会将其传递"
给程序(我已经很久没有碰过它了。当然我可以在工具中解决这个问题,但我想知道是否可以在 Windows 端修复这种粗鲁的行为)。
答案1
如果程序名称包含空格或其他非字母数字字符,则缩短为 DOS 兼容名称。
@="C:\\Program Files (x86)\\PathToClipboard.exe %1"
引号应该括住各个部分,而不是整个字符串。
在这种特殊情况下,你应该只引用第一部分(程序名称)和整个字符串:
@="\"C:\\Program Files (x86)\\PathToClipboard.exe\" %1"
笔记:
\
用于转义内部引号(程序名称周围的引号)- 如果您还引用
%1
(文件路径),它将在将文件路径传递给程序时添加引号,因此不要引用这部分。