1

尝试添加一个注册表条目以创建我想要同步到我的保管箱文件夹的文件夹的符号链接,但是我在获取我的一个变量%~n1, 来展开时遇到了一些麻烦。

如果没有给出文件,批处理文件/命令行将%~n1扩展到文件名或最后一个文件夹,但它拒绝扩展。我%在前面尝试过 double ,最后转义了 tilda \~、 single 和 double%以及它们的所有组合。
来源:http ://ss64.com/nt/syntax-args.html

Echo mklink /d "%HomeDrive%%HomePath%\Dropbox\%~n1" "%1"

当您将文件夹放到批处理文件上时,此行有效。


我的 .reg 文件/“代码”:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Sync with Dropbox"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /k mklink /d \"%%HomeDrive%%%%HomePath%%\\Dropbox\\%~n1\" \"%1\""
4

2 回答 2

2

尝试添加字符串类型REG_EXPAND_SZ
注册表值类型

于 2013-07-04T16:18:46.873 回答
0

%~ 语法仅适用于参数:命令行参数(如您所见)或传递给子例程的参数,因此它们不适用于简单的 echo 语句。解决这个问题的方法是只抛出一个子例程,然后 %~n1 将适用于传递给它的第一个项目。

于 2021-02-06T13:43:00.193 回答