bat的set命令截取字符串时变量怎麽为空了,困惑?

例1:@echooffsetlocalenabledelayedexpansionset/pn=请输入路径(将文件夹拖至此处):if%n:~-1%==\setn=%n:~... 例1:
@echo off
setlocal enabledelayedexpansion
set /p n=请输入路径(将文件夹拖至此处):
if %n:~-1%==\ set n=%n:~0,-1%
echo 文件夹路径是%n%
pause

例2:
@echo off
setlocal enabledelayedexpansion
set /p n=请输入路径(将文件夹拖至此处):
if %n:~-1%==\ (
set n=%n:~0,-1%
) else (
if %n:~-1%==" (
set n=%n:~1,-1%
)
)
echo 文件夹路径是%n%
pause

在这两个批处理中,在例1中拖入路径后,如果路径中没有空格但末尾带有反斜杠\,是可以去掉\而显示出完整路径,如拖入d盤,本来是d:\,显示出来后就是d:了;例2本来是在例1的基础上写出来的,较例1更完善了,除了上面所说的一种情况外,当拖入带有空格的文件夹时,本来就会自动首尾加上引号,例2在这种情况下意在想让它和例1最终显示的效果一样,就是去除英文单引号"后再显示出来,如拖入d盤下program files目录,开始显示"d:program files",一回车就关闭了,怎麽回事,问题出在哪呢?望高手相助。
展开
 我来答
albumin
2014-05-06 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2426万
展开全部
@echo off
setlocal enabledelayedexpansion
set /p n=请输入路径(将文件夹拖至此处):
call :tripquote n
if %n:~-1%==\ (
set n=%n:~0,-1%
)
echo 文件夹路径是%n%
pause
goto :eof
:tripquote
set "n=%~1"
更多追问追答
追问

这不是我要的结果啊?

追答
@echo off
setlocal enabledelayedexpansion
set /p n=请输入路径(将文件夹拖至此处):
call :tripquote %n%
if %n:~-1%==\ (
set n=%n:~0,-1%
)
echo 文件夹路径是%n%
pause
goto :eof
:tripquote
set "n=%~1"

忘了在n两边加上百分号了!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式