-1

我在注册表中创建了一个自定义命令条目,以便在用户右键单击文件夹时将项目添加到 Windows 资源管理器上下文菜单中。这正是注册表中的值:

"C:\Program Files\Directory Switcher\DirectorySwitcher.exe" "%V" "2021.0"

%V返回当前目录。如果目录路径中有任何名称中带有空格的文件夹,则会导致路径拆分为其他命令行参数。为了解决这个问题,微软告诉你在它周围加上引号"%V"

具体问题是,当 %V 位于驱动器根目录时,C:\ 中的反斜杠会转义结束引号并导致其余命令行参数解析不正确。例如,在 C:\ 我得到一个参数C:" 2021.0,而不是预期的两个C:\and 2021.0

如何正确封装 %V 以便它适用于以反斜杠结尾的普通文件夹路径和驱动器根?另一种方法是更改​​我的程序以查找这种边缘情况,但我宁愿了解如何更正我的 shell 动词。

(有关 %V 的信息可以在这个 SuperUser question中找到)

可以在此处找到有关 shell 命令字符串的官方 Microsoft 文档

4

1 回答 1

0

如果您的程序可以处理相对路径,我会输入

"%V\a\.."

导致

X:\\a\..

对于根驱动器,但 C# 可以处理双反斜杠。

这个想法是:进入(不存在的)目录并再次备份。

"%V\."

甚至可能更好更短。

于 2021-09-03T21:57:32.203 回答