使用批处理从路径中删除尾部反斜杠

时间:2021-04-14 12:56:28

标签: windows batch-file cmd path

我在一个变量中保存了这样一个文件名:

C:\Directory\Directory2\

现在我想要这个:

C:\Directory\Directory2

如何从文件名或最后一个字符中剪切最后一个\

2 个答案:

答案 0 :(得分:1)

您可以使用子字符串扩展:

set "var=C:\Directory\Directory2\"
echo %var:~0,1%

显然可能存在最后一个字符不是\的情况。因此,我们宁愿测试是否是这种情况,然后才排除它。

if "%var:~-1%" == "\" set "var=%var:~0,-1%"

答案 1 :(得分:1)

好吧,不要!删除尾部反斜杠可能会更改路径指向的目标;想想C:\——它指向驱动器的根目录,而C:指向它的当前目录

处理潜在的尾随反斜杠最可靠的方法可能是附加 .,因为 C:\Directory\Directory2\ 等价于 C:\Directory\Directory2\.C:\Directory\Directory2C:\Directory\Directory2.,因为所有这些路径都指向完全相同的位置。

如果后缀因外观原因而令人不安,请在附加 . 后通过 for loop 解决:

set "dirPath=C:\Directory\Directory2\"
for %%I in ("%dirPath%.") do echo "%%~fI"

modifier ~f 定义解析路径并将相对路径转换为完整/绝对路径。

如果提供的路径甚至可能以 \. 结尾或类似于 C:.,附加另一个 . 会改变它的目标;然而,这可以在附加 for 之前通过另一个 . 循环解决:

set "dirPath=C:\Directory\Directory2\."
for %%J in ("%dirPath%") do for %%I in ("%%~fJ.") do echo "%%~fI"

请注意,forwildcards 解析为 ?*