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",一回车就关闭了,怎麽回事,问题出在哪呢?望高手相助。 展开
@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",一回车就关闭了,怎麽回事,问题出在哪呢?望高手相助。 展开
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"
更多追问追答
追答
@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两边加上百分号了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询