从批处理文件输入中删除尾部斜杠


75

我有一个要改进的批处理文件。除了要求用户提供不带斜杠的文件夹路径之外,如果末端有斜杠,我是否有一种简单的方法可以从路径中删除最后一个字符?

: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 %datapath:~-1%==\ GOTO:START

Answers:


139

您可以使用与评估类似的语法:

::Does string have a trailing slash? if so remove it 
IF %datapath:~-1%==\ SET datapath=%datapath:~0,-1%

谢谢!我只是遇到了这样一个问题,这是一个完美的答案。
gregturn 2012年

8
您也可以考虑.在斜杠后面添加一个。比子字符串语法短的lil'。
巴雷特

2
如果路径是"C:\My Folder\"什么?
BaSsGaz

3
相反,如果要确保最后有一个反斜杠,那就是:IF NOT "%datapath:~-1%"=="\" SET "datapath=%datapath%\"强制它。引号保护内部空间。
杰西·奇斯霍尔姆

3
如果路径中有空格,则需要注意引号。如果%datapath%包含前后引号,则可以使用IF "%datapath:~-2,-1%"=="\" SET datapath="%datapath:~1,-2%"
yoyo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.