如果文件夹中有批处理文件的空格,则获取最后一个文件夹名称

Get last foldername if folder has spaces with batch file

我正在使用批处理文件尝试获取路径中的最后一个文件夹名称。

批处理文件获取当前工作目录,向上一级并使用该文件夹名。问题是,如果文件夹名称中有 "My Project" 这样的空格,那么下面的代码将 return 只是 "Project".

@echo off
cls

:: get pathnames
set ProjectRoot=%~dp0..\
set ProjectRootLast=%ProjectRoot:~0, -1%
for %%f in (%ProjectRootLast%) do (
    set ProjectName=%%~nxf
)

echo %ProjectRoot%
echo %ProjectName%
pause

aschipfl 是对的,你应该使用:

@echo off
cls

:: get pathnames
set "ProjectRoot=%~dp0..\"
set "ProjectRootLast=%ProjectRoot:~0,-1%"
for %%f in ("%ProjectRootLast%") do (
    set "ProjectName=%%~nxf"
)

echo %ProjectRoot%
echo %ProjectName%
pause

但是您可以使用

更有效地做到这一点
for %%* in (.) do echo %%~nx*

获取当前目录的名称和

for %%* in (./..) do echo %%~nx*

获取上面那个目录的名字