3

我已经通过 HKCR\Drive\shell\MapLocalDriveHere\command 中的注册表向我的上下文菜单添加了一个命令,这样当我右键单击驱动器时。我希望它给我右键单击的驱动器名称为“C:”而不是“C:\”,因为这会导致我尝试运行的命令出现问题。

cmd /c subst %1 /D

这扩展为:

cmd /c subst C:\ /D

并且命令失败(它期望subst C: /D)。如何获取没有尾随 \ 的参数,或将其删除?%~d1并且%~1不要从注册表项展开,键入 REG_EXPAND_SZ。

您可以通过查看位于https://github.com/Ehryk/ContextMenuTools的项目源来更好地理解我想要做什么(尤其是这个文件:https ://github.com/Ehryk/ContextMenuTools/blob /master/Custom%20Installs/Map%20Local%20Drive%20Here/MapLocalDriveHere.inf )

4

4 回答 4

5

您使用带有冒号的驱动器号参数进入for /f循环:%%~d

FOR /f "delims=" %%a IN ("%~1") DO cmd /c subst %%~da /D
于 2013-07-15T09:27:02.803 回答
3

好吧...让我们结合验证码和 npocmaka 答案的最佳功能。不需要中间变量,也不需要 FOR 语句:

cmd /c subst %~d1 /D
于 2013-07-15T11:24:31.310 回答
2
set "param=%~1"
set "param=%param:~0,-1%"
cmd /c subst %param% /D
于 2013-07-15T07:34:28.050 回答
0

出于某种原因,我不得不切换到%V而不是%1在注册表中解决这个问题:

cmd /c mapdrive.bat ""%V"" /D

HKCR,Drive\Shell\MapLocalDriveHere\command,,0x00020000,"cmd /c mapdrive.bat ""%V"" /D"
于 2016-03-12T20:28:22.390 回答