我在一个变量中保存了这样一个文件名:
C:\Directory\Directory2\
现在我想要这个:
C:\Directory\Directory2
如何从文件名或最后一个字符中剪切最后一个\
?
答案 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\Directory2
和 C:\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"
请注意,for
将 wildcards 解析为 ?
和 *
。