Re fry82lau:
从你顶楼中的说明程序来看,你似乎想实现的是打印某一路径下所有包含JPG文件的目录及子目录的名称。这需要考虑以下问题,搜索路径是否包含子目录,如果包含则子目录是否存在多级,如果存在多级则同名不同路径的子目录如何处理?
以下代码实现打印搜索路径下含有JPG文件的一级子目录的目录名
for /f %%d in ('dir /ad /b') do if exist "%%d\*.jpg" echo %%d >>内容.txt
以下代码实现打印搜索路径下含有JPG文件的多级目录及子目录的路径
for /r /d %%d in (*.*) do if exist "%%d\*.jpg" echo %%d >>内容.txt
而如果仅打印目录名,可以根据2楼的程序略作修改,将其中的for一句替换为
for /r /d %%d in (*.*) do if exist "%%d\*.jpg" call :began %%d
至于3742668提到的另外一种方法,猜想是使用set进行逆序探测。实现如下:
@echo off & setlocal EnableDelayedExpansion
for /r /d %%d in (*.*) do if exist "%%d\*.jpg" call :GetDirName %%d
goto:eof
:GetDirName
set pn=%~f1
for /l %%d in (1,1,256) do if "!pn:~-%%d,1!"=="\" (goto:out) else (set dn=!pn:~-%%d,1!!dn!)
:out
echo %dn% >>内容.txt
set dn=