从批处理文件中的路径中提取文件夹名称

时间:2016-01-22 15:18:15

标签: windows batch-file

我想遍历特定目录及其所有子目录中的所有文件,然后打印出每个文件的文件夹名称。

我不知道如何获取每个文件的文件夹名称。

FOR /F "delims=" %%x IN ('dir /B /A /S *') DO (
    :: Suppose %%x is 'C:\myfolder\a.txt', the desired output is 'myfolder'
    :: %%~nx is not correct
    echo ???
)

2 个答案:

答案 0 :(得分:3)

我认为这是你正在寻找的东西:

@echo off
FOR /F "delims=" %%F IN ('dir /B /A /S *') DO (
for %%D in ("%%~dpF\.") do echo %%~nxD
)
pause

答案 1 :(得分:1)

如果您只想要路径(没有驱动器,没有文件名),%%~px就是您需要的

如果您只想要最后一个文件夹,而不是完整路径。这确实不是那么简单:

@echo off 
setlocal enabledelayedexpansion
for /f "delims=" %%x in ('dir /b /a /s *') do (
  set "line=%%~dpx"
  for /f "delims=" %%y in ("!line:\=.!") do set folder=%%~xy
  echo %%~nxx is in:  !folder:~1!
)