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

Windows批处理脚本:如何递归遍历排除特定文件类型、.git及__pycache__目录后执行字符串替换

Windows批处理脚本:如何递归遍历排除特定文件类型、.git及__pycache__目录后执行字符串替换

我帮你调整了批处理脚本,解决了原脚本里无法排除嵌套__pycache__目录的问题,同时优化了条件判断和变量处理逻辑,确保能正确递归处理所有符合要求的文件:

@echo off
setlocal EnableDelayedExpansion

:: 请替换为实际的替换变量值
set "replace_package={{ADDON_NAME_PACKAGE}}"
set "package_name=你的目标包名"
set "replace_addon_name={{ADDON_NAME}}"
set "addon_short_name=你的目标短名称"
set "replace_addon_full={{ADDON_NAME_FULL}}"
set "addon_full_name=你的目标完整名称"

:: 递归遍历所有文件
for /r %%F in (*) do (
    echo 正在检查: %%F
    :: 排除指定扩展名的文件(不区分大小写)
    if /i not "%%~xF"==".sh" if /i not "%%~xF"==".png" if /i not "%%~xF"==".bat" (
        :: 排除.git目录下的所有文件
        set "file_path=%%~dpF"
        if "!file_path:.git\=!"=="!file_path!" (
            :: 排除所有__pycache__目录下的文件(不管嵌套层级)
            if "!file_path:__pycache__\=!"=="!file_path!" (
                :: 检查文件是否包含需要替换的字符串,避免无意义操作
                findstr /C:"%replace_package%" /C:"%replace_addon_name%" /C:"%replace_addon_full%" "%%F" >nul 2>&1
                if not errorlevel 1 (
                    echo 正在处理文件: %%F
                    :: 处理引号嵌套和特殊字符问题,先关闭延迟扩展执行sed
                    set "target_file=%%F"
                    setlocal DisableDelayedExpansion
                    sed -i -e "s/%replace_package%/%package_name%/g" -e "s/%replace_addon_name%/%addon_short_name%/g" -e "s/%replace_addon_full%/%addon_full_name%/g" "%target_file%"
                    endlocal
                )
            )
        )
    )
)

endlocal
echo 处理完成!

关键优化点说明:

  • 正确遍历文件:去掉了原脚本的/d参数,for /r默认递归遍历所有文件,符合你处理文件替换的需求
  • 排除嵌套目录:通过字符串替换!file_path:.git\=!和!file_path:__pycache__\=!判断路径是否包含目标目录,不管这些目录嵌套在多少层子目录里,都能准确排除
  • 不区分大小写的扩展名判断:加入/i参数,避免因为扩展名大小写不一致导致漏判
  • 优化效率:先用findstr检查文件是否包含需要替换的字符串,只对有目标内容的文件执行替换,减少不必要的操作
  • 特殊字符处理:通过切换延迟变量扩展的状态,避免文件名中的!等特殊字符被错误解析

备注:内容来源于stack exchange,提问作者Macky's UserStalker Bot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:58:07