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

求助:Batch脚本递归列出.js文件时如何显示其所在目录

解决Batch脚本按目录分组列出JS文件的问题

嘿,我来帮你搞定这个需求!你原来的脚本确实只能逐个输出JS文件的完整路径,没法按目录把同目录下的文件聚合在一起显示。咱们可以通过先遍历目录,再在每个目录下收集JS文件的方式来实现你要的输出格式。

完整解决方案脚本

@echo off
setlocal enabledelayedexpansion

:: 清空输出文件(如果已存在),或者创建新文件
echo. > names.txt

:: 递归遍历指定起始目录下的所有子目录(这里用C:\project作为起始目录)
for /d /r "C:\project" %%d in (*) do (
    :: 初始化当前目录的JS文件列表变量
    set "js_files="
    :: 遍历当前目录下的所有*.js文件
    for %%f in ("%%d\*.js") do (
        :: 只提取文件名(不含路径),追加到列表中
        set "js_files=!js_files! %%~nxf"
    )
    :: 如果当前目录有JS文件,才写入输出文件
    if not "!js_files!"=="" (
        echo %%d!js_files! >> names.txt
    )
)

endlocal
pause

关键部分解释

  1. setlocal enabledelayedexpansion:这是Batch里处理循环内变量修改的必备设置,能让我们在循环中实时读取和更新js_files变量的值。
  2. for /d /r "C:\project" %%d in (*):递归遍历C:\project下的所有子目录,%%d会保存当前遍历到的目录路径。如果想从当前脚本所在目录开始遍历,把"C:\project"改成.即可。
  3. %%~nxf:Batch变量扩展语法,用来提取文件的名称+扩展名(去掉完整路径),正好符合你要的输出格式。
  4. 空目录过滤:通过if not "!js_files!"==""判断,避免把没有JS文件的目录写入输出。

输出效果

运行后names.txt里的内容会和你要求的格式完全一致:

c:\project project.js project_time.js
c:\project\core core.js core_render.js core_application.js

内容的提问来源于stack exchange,提问作者Panther Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:37:51