Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 删除subst命令中的尾随\项_Windows_Batch File_Variable Expansion - Fatal编程技术网

Windows 删除subst命令中的尾随\项

Windows 删除subst命令中的尾随\项,windows,batch-file,variable-expansion,Windows,Batch File,Variable Expansion,我已通过HKCR\Drive\shell\MapLocalDriveHere\command中的注册表将命令添加到上下文菜单中,以便在右键单击驱动器时。我希望它将我右键单击的驱动器的名称命名为“C:”而不是“C:\”,因为这会导致我尝试运行的命令出现问题 cmd /c subst %1 /D 这扩展到: cmd /c subst C:\ /D 命令失败(它需要subst C:/D)。如何在没有尾随\的情况下获取参数,或将其删除%d1和%1不要从注册表项展开,键入REG\u expand\u

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

cmd /c subst %1 /D
这扩展到:

cmd /c subst C:\ /D
命令失败(它需要
subst C:/D
)。如何在没有尾随\的情况下获取参数,或将其删除
%d1
%1
不要从注册表项展开,键入REG\u expand\u SZ


您可以通过查看项目源代码(尤其是此文件:)更好地理解我试图做的事情。

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

FOR /f "delims=" %%a IN ("%~1") DO cmd /c subst %%~da /D

嗯。。。让我们结合captcha和npocmaka答案的最佳功能。不需要中间变量,也不需要for语句:

cmd /c subst %~d1 /D

出于某种原因,我必须切换到
%V
,而不是
%1
,才能在注册表中解决此问题:

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

HKCR,Drive\Shell\MapLocalDriveHere\command,,0x00020000,"cmd /c mapdrive.bat ""%V"" /D"

为了安全起见,如果“%param:~-1%”==“\”,我会添加一个检查
。我认为我不能在注册表项中执行多行操作。也许我需要调用一个执行此操作的.bat文件,而不是尝试使用一行代码执行此操作?您可以向注册表项添加新行。您需要以二进制模式编辑它并为新行设置十六进制值-
0d 0a
,或者您只需在行之间设置
&
%~1
不展开,我不知道我是否可以像你在.bat文件中那样在注册表项中进行参数操作(它似乎不起作用),即使使用纯for也可以做到:
for%%d in(“%1”)do cmd/c subst%%~da/d
%~1
不会从注册表项展开。这是HKCR\Drive\shell\MapLocalDriveHere\command中的注册表项,键入:REG\u EXPAND\u sz如果您提出问题,请提供所有相关数据。在Regkey中,您可以使用
%1
而不使用双引号。
%d1
不会展开,也不会展开
%1
。到目前为止,只有
%1
变成了{Drive}:`。这位于HKCR\Drive\shell\MapLocalDriveHere\command中的注册表项中,键入:REG\u EXPAND\u SZ
cmd /c mapdrive.bat ""%V"" /D

HKCR,Drive\Shell\MapLocalDriveHere\command,,0x00020000,"cmd /c mapdrive.bat ""%V"" /D"