这是这个问题的变体:从批处理文件输入中删除尾部斜杠 https://stackoverflow.com/questions/2952401/remove-trailing-slash-from-batch-file-input
但它有微妙的不同,所以我不认为这是一个骗局。
我在使用包含空格的目录(运行 WinXP)时遇到问题。
:START
@echo What folder do you want to process? (Provide a path without a closing backslash)
set /p datapath=
::Is string empty?
IF X%datapath% == X GOTO:START
::Does string have a trailing slash? if so remove it
IF %datapath:~-1%==\ SET datapath=%datapath:~0,-1%
echo %datapath%
它处理:
c:\
正确地(将其剥离到 c:)
但如果你输入:
c:\test space
错误是“此时出现意外的空间”。
如果您尝试输入:
"c:\test space"
你会得到同样的错误。
我认为这将涉及在这一行中战略性地放置一两个“:
IF %datapath:~-1%==\ SET datapath=%datapath:~0,-1%
但我没有任何运气。
有任何想法吗?
您可以通过延迟扩展来解决它,因为延迟扩展的工作方式与百分比扩展不同。
:START
setlocal EnableDelayedExpansion
@echo What folder do you want to process? (Provide a path without a closing backslash)
set /p datapath=
::Is string empty?
IF X!datapath! == X GOTO:START
::Does string have a trailing slash? if so remove it
IF !datapath:~-1!==\ SET "datapath=!datapath:~0,-1!"
echo !datapath!
它的扩展晚于percent扩展,并且在延迟扩展之后不再进行解析,因此即使空格或特殊字符也会产生任何影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)