我想遍历特定目录及其所有子目录中的所有文件,然后打印出每个文件的文件夹名称。
我不知道如何获取每个文件的文件夹名称。
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 ???
)
答案 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!
)