Batch file 通过编程仅从“quot;”返回的路径中删除最后一个斜杠~dp0“;

Batch file 通过编程仅从“quot;”返回的路径中删除最后一个斜杠~dp0“;,batch-file,windows-7,cmd,Batch File,Windows 7,Cmd,在CMD.BAT文件中,如何通过编程从“%~dp0”返回的路径中删除最后一个斜杠 这是为了解决我指挥失败的问题 subst F: "%~dp0" 给予 S:\TLIB distribution\FG trial>subst F: "S:\TLIB distribution\FG trial\" Path not found - S:\TLIB distribution\FG trial\ 鉴于 S:\TLIB distribution\FG trial>subst F: "S:\

在CMD.BAT文件中,如何通过编程从“%~dp0”返回的路径中删除最后一个斜杠

这是为了解决我指挥失败的问题

subst F: "%~dp0"
给予

S:\TLIB distribution\FG trial>subst F: "S:\TLIB distribution\FG trial\"
Path not found - S:\TLIB distribution\FG trial\
鉴于

S:\TLIB distribution\FG trial>subst F: "S:\TLIB distribution\FG trial"
S:\TLIB distribution\FG trial>
成功。

尝试以下操作:

SETLOCAL  EnableDelayedExpansion
SET str=%~dp0
SET str=!str:~0,-1!
ECHO %str%
SUBST F: "%str%"
这将返回不带最后一个字符(\)的字符串


编辑:仅当您不在驱动器根目录下时,它才起作用。因此,请使用dbenham的解决方案或使用if语句捕获根案例。我不会删除我的帖子,因为它仍然是标题中问题的有效答案(通过编程仅从“%~dp0”返回的路径中删除最后一个斜杠),在其他情况下可能会有所帮助。

选项1:

pushd "%~dp0"
subst f: .
popd
备选案文2:

for %%A in ("%~dp0\.") do subst f: "%~fA"
备选案文3:

for %%A in ("%~f0\..") do subst f: "%~fA"

如果脚本驻留在驱动器根目录中,则此操作可能失败。已确认:。SUBST路径语法是不规则的,尽管在右边并没有提及,但它只有在不在根目录下时才有效。因此,请使用dbenham的解决方案,或者使用if语句捕获根案例。“或者使用if语句捕获根案例”我想知道还会有多少其他失败案例。谢谢。我要1英镑。