获取文件夹名称

Get folder name

我有一些字符串,这是一些路径 C:\A\B\C\D\ 如何获取文件夹名称,例如 "A" 或 "B" 或其他需要的名称。 我只有 "D":

的解决方案
@echo off
setlocal enabledelayedexpansion
FOR /f %%i IN ("C:\A\B\C\D\") DO (
set parent=%%~dpi
for /F "tokens=*" %%f in ("!parent:~0,-1!") do echo %%~nf
)

下一个代码片段将字符串拆分为用 \ 反斜杠字符分隔的子字符串。在字符串(路径)中使用或不使用尾部反斜杠,使用或不使用空白 space(s)。注意 set 命令中的正确引用:

@ECHO OFF
SETLOCAL enableextensions

set "fullpath=C:\Aa\B b\Cc\D d\"
set "to_parse="%fullpath:\=" "%""

for %%G in (%to_parse%) do (
  echo %%~G       %%G
) 

输出:

==>30285354.bat
C:       "C:"
Aa       "Aa"
B b       "B b"
Cc       "Cc"
D d       "D d"
       ""

==>

资源(必读):

你的问题不清楚("other folder needed" 不是 一个规范)所以我假设 你想分开所有文件夹放入数组元素中,因此可以通过其索引获取任何所需的文件夹。

@echo off
setlocal EnableDelayedExpansion

set "string=C:\A\B\C\D\"

rem Separate all folders in the string into "folder" array
set i=-1
for %%a in ("%string:\=" "%") do (
   if %%a neq "" (
      set /A i+=1
      set "folder[!i!]=%%~a"
   )
)

rem Show some folders
echo The first folder:  %folder[1]%
echo The second folder: %folder[2]%
echo The last folder:   !folder[%i%]!

有关批处理文件中数组的更多详细信息,请参阅 this post