使用批处理从路径中删除尾随反斜杠
Remove trailing backslash from a path with batch
我在变量中保存了这样一个文件名:
C:\Directory\Directory2\
现在我想要这个:
C:\Directory\Directory2
如何从文件名或最后一个字符中删除最后 \
?
您可以使用子字符串扩展:
set "var=C:\Directory\Directory2\"
echo %var:~0,1%
显然可能存在最后一个字符不是 \
的情况。因此,我们宁愿测试是否是这种情况,然后才排除它。
if "%var:~-1%" == "\" set "var=%var:~0,-1%"
好吧,别这样!删除结尾的反斜杠可能会更改路径指向的目标;想想C:\
——它指向驱动器的根目录,而C:
指向当前目录它。
处理潜在尾部反斜杠的最可靠方法可能是附加 .
,因为 C:\Directory\Directory2\
等同于 C:\Directory\Directory2\.
、C:\Directory\Directory2
和 C:\Directory\Directory2.
, 因为所有这些路径都指向完全相同的位置。
如果后缀因美观原因造成干扰,请在附加 .
:
后通过 for
loop 解决
set "dirPath=C:\Directory\Directory2\"
for %%I in ("%dirPath%.") do echo "%%~fI"
modifier ~f
定义解析路径并将相对路径转换为 full/absolute 路径。
如果提供的路径甚至可能以 \.
结尾或类似于 C:.
,附加另一个 .
将改变其目标;然而,这可以在附加 .
:
之前通过另一个 for
循环来解决
set "dirPath=C:\Directory\Directory2\."
for %%J in ("%dirPath%") do for %%I in ("%%~fJ.") do echo "%%~fI"
请注意 for
像 ?
和 *
一样解析 wildcards。
我在变量中保存了这样一个文件名:
C:\Directory\Directory2\
现在我想要这个:
C:\Directory\Directory2
如何从文件名或最后一个字符中删除最后 \
?
您可以使用子字符串扩展:
set "var=C:\Directory\Directory2\"
echo %var:~0,1%
显然可能存在最后一个字符不是 \
的情况。因此,我们宁愿测试是否是这种情况,然后才排除它。
if "%var:~-1%" == "\" set "var=%var:~0,-1%"
好吧,别这样!删除结尾的反斜杠可能会更改路径指向的目标;想想C:\
——它指向驱动器的根目录,而C:
指向当前目录它。
处理潜在尾部反斜杠的最可靠方法可能是附加 .
,因为 C:\Directory\Directory2\
等同于 C:\Directory\Directory2\.
、C:\Directory\Directory2
和 C:\Directory\Directory2.
, 因为所有这些路径都指向完全相同的位置。
如果后缀因美观原因造成干扰,请在附加 .
:
for
loop 解决
set "dirPath=C:\Directory\Directory2\"
for %%I in ("%dirPath%.") do echo "%%~fI"
modifier ~f
定义解析路径并将相对路径转换为 full/absolute 路径。
如果提供的路径甚至可能以 \.
结尾或类似于 C:.
,附加另一个 .
将改变其目标;然而,这可以在附加 .
:
for
循环来解决
set "dirPath=C:\Directory\Directory2\."
for %%J in ("%dirPath%") do for %%I in ("%%~fJ.") do echo "%%~fI"
请注意 for
像 ?
和 *
一样解析 wildcards。