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

2eafrhcq  于 2022-12-24  发布在  Windows
关注(0)|答案(2)|浏览(393)

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

C:\Directory\Directory2\

现在我想要这个

C:\Directory\Directory2

如何从文件名或最后一个字符中删除最后一个\

bjp0bcyl

bjp0bcyl1#

好吧,就是不要这样做!删除后面的反斜杠可能会改变路径指向的目标;想想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"

请注意,for?*一样解析wildcards

qyyhg6bp

qyyhg6bp2#

可以使用子字符串扩展:

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

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

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

相关问题