如何获取包含JPG文件的文件夹名称?批处理代码改进求助
获取包含JPG文件的文件夹列表
我懂你要的效果——原来的代码会把所有子文件夹都列出来,但咱们只需要那些确实有JPG文件存在的目录。这里给你调整后的批处理代码,直接就能用:
简洁版(推荐)
@echo off :: 先清空旧的列表文件(如果存在) del /q jpg_folders.txt 2>nul :: 递归遍历所有子目录,检查是否有JPG文件 for /r /d %%d in (*) do ( :: 判断当前目录下是否存在JPG文件 if exist "%%d\*.jpg" ( :: 写入不带完整路径的目录名到列表 echo %%~nd >> jpg_folders.txt :: 如果需要完整路径,把上面的%%~nd改成%%d即可 ) ) :: 去重(避免同一个目录因多个JPG被重复写入) sort /unique jpg_folders.txt > temp.txt move /y temp.txt jpg_folders.txt >nul echo 已生成包含JPG文件的文件夹列表:jpg_folders.txt pause
详细注释版(方便理解逻辑)
如果想搞清楚每一步的作用,这个版本加了完整注释:
@echo off setlocal enabledelayedexpansion del /q jpg_folders.txt 2>nul :: /r 递归遍历所有子目录,/d 指定只遍历目录(不处理文件) for /r /d %%d in (*) do ( :: 用dir命令检查目录下的JPG文件,输出和错误都重定向到空设备(不显示冗余信息) dir /b "%%d\*.jpg" >nul 2>&1 :: errorlevel为0表示找到文件,1表示没找到 if !errorlevel! equ 0 ( echo %%~nd >> jpg_folders.txt ) ) :: 排序并去重,确保每个目录只在列表中出现一次 sort /unique jpg_folders.txt > temp.txt move /y temp.txt jpg_folders.txt >nul echo 操作完成!列表已保存到jpg_folders.txt endlocal
小调整提示
- 如果需要保存完整目录路径(比如
C:\Photos\Summer而不是Summer),把代码里的%%~nd替换成%%d就行。 - Windows默认不区分大小写,所以
.jpg和.JPG都会被匹配;如果需要严格区分大小写,得额外调整命令逻辑。
内容的提问来源于stack exchange,提问作者Mhwmd
相关产品推荐
相关产品推荐

