【问题标题】:Get last foldername if folder has spaces with batch file如果文件夹包含批处理文件的空格,则获取最后一个文件夹名称
【发布时间】:2015-12-06 21:50:48
【问题描述】:

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

批处理文件获取当前工作目录,上升一级并使用该文件夹名称。问题是,如果文件夹名称中有“我的项目”之类的空格,那么下面的代码将只返回“项目”。

@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

【问题讨论】:

  • 删除~0, -1部分中的空格...并在for枚举的表达式周围加上引号(in之后的()之间的那个)...跨度>

标签: windows batch-file path command


【解决方案1】:

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*

获取上面目录的名称

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多