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

Batch批处理如何在for循环中获取文件夹名并执行多步操作

批处理遍历指定目录提取文件夹名并逐次执行操作实现方案

核心语法规则

  • 遍历目录必须使用for /d参数,搭配通配符匹配目标路径下的所有文件夹节点
  • 提取纯文件夹名称(不带前置完整路径),直接调用for变量的~nx修饰符,会自动剥离路径前缀,只保留文件夹名本身
  • for循环的do代码块内可以写任意多的操作逻辑,所有逻辑对单个文件夹执行完成后,才会进入下一个文件夹的遍历流程,不需要额外添加跳转/等待控制

必知避坑点

  • 写在.bat/.cmd脚本文件中时,for循环的自定义变量必须用双百分号%%开头;如果是直接在CMD命令行窗口手动敲命令执行,才用单百分号%
  • 如果循环体内存在变量赋值操作,且需要在同个代码块内读取变量赋值后的最新值,必须在脚本开头开启延迟变量扩展,否则会读到循环启动前的变量初始值,出现逻辑错误

可直接套用的代码模板

@echo off
:: 开启延迟变量扩展,规避循环内变量读取异常问题
setlocal enabledelayedexpansion

:: 替换为你需要遍历的目标目录路径,注意路径结尾不要加反斜杠
set "SCAN_PATH=D:\your\actual\directory"

:: /d参数指定遍历目录类型,通配符*匹配目标路径下的所有一级子文件夹
for /d %%dir_item in ("%SCAN_PATH%\*") do (
    :: 剥离完整路径,提取纯文件夹名称
    set "current_folder_name=%%~nxdir_item"
    echo 正在处理文件夹:!current_folder_name!

    :: 以下区域直接写你需要基于文件夹名执行的自定义操作即可,示例:
    :: 1. 基于文件夹名生成同名标记文件
    type nul > "%SCAN_PATH%\!current_folder_name!_backup_flag.txt"
    :: 2. 将文件夹名作为入参调用其他程序/脚本
    :: call other_script.bat !current_folder_name!
    :: 3. 拼接文件夹下的指定文件路径做后续处理
    :: set "config_file=%SCAN_PATH%\!current_folder_name!\settings.ini"
)

:: 恢复系统默认环境变量状态
endlocal
pause

扩展场景说明

如果需要递归遍历目标目录下所有层级的子文件夹,只需要把for循环的语法替换为for /d /r "%SCAN_PATH%" %%dir_item in (*) do (即可,其余逻辑不变,%%~nxdir_item依然可以正确取到当前遍历到的子文件夹的纯名称。

内容的提问来源于stack exchange,提问作者Harry Manback

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:45:35