You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取包含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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:59:09