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

85

我有一个批处理文件,想要改进它。有没有一种简单的方法,如果路径末尾有斜杠,就从路径中移除最后一个字符,而不需要用户提供没有尾随斜杠的文件夹路径?

: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
1个回答

156

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

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

谢谢!我刚遇到了这样的问题,而这正是完美的答案。 - gregturn
8
对于末尾有斜杠的情况,您也可以考虑只添加一个 . 作为解决方法。比使用子字符串语法更简洁。 - Barett
2
如果路径是"C:\My Folder\"会怎样? - BaSsGaz
4
如果你想确保路径末尾有反斜杠,可以使用以下代码:IF NOT "%datapath:~-1%"=="\" SET "datapath=%datapath%\"。这样做可以强制添加反斜杠。引号的作用是保护路径中的空格。 - Jesse Chisholm
4
如果路径中包含空格,则需要小心引号。如果 %datapath% 包含前导和尾随引号,则可以使用 IF "%datapath:~-2,-1%"=="\" SET datapath="%datapath:~1,-2%" - yoyo
值得一读:https://dev59.com/mHA75IYBdhLWcg3wrrNS#25853380 <- 这对于参数也适用。 - Martin Braun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接