找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18288|回复: 20

[文件操作] 急急急!!调用子文件夹内bat文件

[复制链接]
发表于 2025-5-30 01:13:35 | 显示全部楼层 |阅读模式
各位老哥,小弟遇到个问题,我有700多个子文件夹,每个子文件夹内都有一个相同的bat(重命名类似这样的     “ren "AJP1DX-25C0512001-效果图-鍓嶅悗A.jpg" 004-AJP1DX-25C0512001-效果图-鍓嶅悗A.jpg"   ,有一万多行),我在父文件夹内做了个主bat来调用子文件夹内的多个bat.
怕同时运行子文件夹内的多个bat文件导致电脑死机,所以主bat是对子文件夹内的bat进行逐个运行。
问题就是这个主bat文件运行一段时间后,总是会闪退。各位老哥可以帮帮忙整一个主bat么。

==================
我的主bat

@echo on  &:: 显示所有执行的命令(调试模式)
@setlocal enabledelayedexpansion

:: 设置要运行的bat文件名(修改为你的bat文件名)
set "batFile=rename.bat"

:: 获取当前目录
set "rootDir=%~dp0"

echo 正在扫描子文件夹中的 %batFile% ...
echo.

for /d %%d in ("%rootDir%*") do (
    if exist "%%d\%batFile%" (
        echo ═══════════════════════════════
        echo 正在运行: "%%d\%batFile%"
        cd /d "%%d"
        call "%batFile%"
        cd /d "%rootDir%"
        echo.
    ) else (
        echo [跳过] "%%d" 未找到 %batFile%
    )
)

echo 所有任务已完成!
pause

==============
我的子文件夹内bat

ren "AJP1DX-25C0512001-效果图-鍓嶅悗A.jpg" 004-AJP1DX-25C0512001-效果图-鍓嶅悗A.jpg
ren "AJP1DX-25C0512001-效果图-鍓嶅悗B.jpg" 009-AJP1DX-25C0512001-效果图-鍓嶅悗B.jpg
ren "AJP1DX-25C0512001-效果图-鍓嶅悗C.jpg" 014-AJP1DX-25C0512001-效果图-鍓嶅悗C.jpg
ren "AJP1DX-25C0512001-效果图-鍓嶉?缁嗚妭鍥綛.jpg" 010-AJP1DX-25C0512001-效果图-鍓嶉?缁嗚妭鍥綛.jpg
ren "AJP1DX-25C0512001-效果图-鍓嶉?缁嗚妭鍥続.jpg" 005-AJP1DX-25C0512001-效果图-鍓嶉?缁嗚妭鍥続.jpg
ren "AJP1DX-25C0512001-效果图-鍓嶉?缁嗚妭鍥綜.jpg" 015-AJP1DX-25C0512001-效果图-鍓嶉?缁嗚妭鍥綜.jpg
ren "AJP1DX-25C0512001-效果图-鍓岰.jpg" 011-AJP1DX-25C0512001-效果图-鍓岰.jpg
ren "AJP1DX-25C0512001-效果图-鍓岯.jpg" 006-AJP1DX-25C0512001-效果图-鍓岯.jpg
ren "AJP1DX-25C0512001-效果图-鍓岮.jpg" 001-AJP1DX-25C0512001-效果图-鍓岮.jpg
ren "AJP1DX-25C0512001-效果图-鏍锋満鍓岰.jpg" 013-AJP1DX-25C0512001-效果图-鏍锋満鍓岰.jpg
ren "AJP1DX-25C0512001-效果图-鏍锋満鍓岯.jpg" 008-AJP1DX-25C0512001-效果图-鏍锋満鍓岯.jpg
ren "AJP1DX-25C0512001-效果图-鏍锋満鍓岮.jpg" 003-AJP1DX-25C0512001-效果图-鏍锋満鍓岮.jpg
ren "AJP1DX-25C0512001-效果图-妯$壒鍓嶇墖A.jpg" 002-AJP1DX-25C0512001-效果图-妯$壒鍓嶇墖A.jpg
ren "AJP1DX-25C0512001-效果图-妯$壒鍓嶇墖B.jpg" 007-AJP1DX-25C0512001-效果图-妯$壒鍓嶇墖B.jpg
ren "AJP1DX-25C0512001-效果图-妯$壒鍓嶇墖C.jpg" 012-AJP1DX-25C0512001-效果图-妯$壒鍓嶇墖C.jpg
ren "AJP1DX-25C0512002-效果图-鍓嶅悗A.jpg" 004-AJP1DX-25C0512002-效果图-鍓嶅悗A.jpg
ren "AJP1DX-25C0512002-效果图-鍓嶅悗B.jpg" 009-AJP1DX-25C0512002-效果图-鍓嶅悗B.jpg
ren "AJP1DX-25C0512002-效果图-鍓嶅悗C.jpg" 014-AJP1DX-25C0512002-效果图-鍓嶅悗C.jpg
ren "AJP1DX-25C0512002-效果图-鍓嶉?缁嗚妭鍥綛.jpg" 010-AJP1DX-25C0512002-效果图-鍓嶉?缁嗚妭鍥綛.jpg
ren "AJP1DX-25C0512002-效果图-鍓嶉?缁嗚妭鍥続.jpg" 005-AJP1DX-25C0512002-效果图-鍓嶉?缁嗚妭鍥続.jpg
ren "AJP1DX-25C0512002-效果图-鍓嶉?缁嗚妭鍥綜.jpg" 015-AJP1DX-25C0512002-效果图-鍓嶉?缁嗚妭鍥綜.jpg
ren "AJP1DX-25C0512002-效果图-鍓岰.jpg" 011-AJP1DX-25C0512002-效果图-鍓岰.jpg
ren "AJP1DX-25C0512002-效果图-鍓岯.jpg" 006-AJP1DX-25C0512002-效果图-鍓岯.jpg
ren "AJP1DX-25C0512002-效果图-鍓岮.jpg" 001-AJP1DX-25C0512002-效果图-鍓岮.jpg
ren "AJP1DX-25C0512002-效果图-鏍锋満鍓岰.jpg" 013-AJP1DX-25C0512002-效果图-鏍锋満鍓岰.jpg
ren "AJP1DX-25C0512002-效果图-鏍锋満鍓岯.jpg" 008-AJP1DX-25C0512002-效果图-鏍锋満鍓岯.jpg
ren "AJP1DX-25C0512002-效果图-鏍锋満鍓岮.jpg" 003-AJP1DX-25C0512002-效果图-鏍锋満鍓岮.jpg
ren "AJP1DX-25C0512002-效果图-妯$壒鍓嶇墖A.jpg" 002-AJP1DX-25C0512002-效果图-妯$壒鍓嶇墖A.jpg
ren "AJP1DX-25C0512002-效果图-妯$壒鍓嶇墖B.jpg" 007-AJP1DX-25C0512002-效果图-妯$壒鍓嶇墖B.jpg
ren "AJP1DX-25C0512002-效果图-妯$壒鍓嶇墖C.jpg" 012-AJP1DX-25C0512002-效果图-妯$壒鍓嶇墖C.jpg
ren "AJP1DX-25C0512003-效果图-鍓嶅悗A.jpg" 004-AJP1DX-25C0512003-效果图-鍓嶅悗A.jpg
ren "AJP1DX-25C0512003-效果图-鍓嶅悗B.jpg" 009-AJP1DX-25C0512003-效果图-鍓嶅悗B.jpg
ren "AJP1DX-25C0512003-效果图-鍓嶅悗C.jpg" 014-AJP1DX-25C0512003-效果图-鍓嶅悗C.jpg
ren "AJP1DX-25C0512003-效果图-鍓嶉?缁嗚妭鍥綛.jpg" 010-AJP1DX-25C0512003-效果图-鍓嶉?缁嗚妭鍥綛.jpg
ren "AJP1DX-25C0512003-效果图-鍓嶉?缁嗚妭鍥続.jpg" 005-AJP1DX-25C0512003-效果图-鍓嶉?缁嗚妭鍥続.jpg
ren "AJP1DX-25C0512003-效果图-鍓嶉?缁嗚妭鍥綜.jpg" 015-AJP1DX-25C0512003-效果图-鍓嶉?缁嗚妭鍥綜.jpg
ren "AJP1DX-25C0512003-效果图-鍓岰.jpg" 011-AJP1DX-25C0512003-效果图-鍓岰.jpg
ren "AJP1DX-25C0512003-效果图-鍓岯.jpg" 006-AJP1DX-25C0512003-效果图-鍓岯.jpg
ren "AJP1DX-25C0512003-效果图-鍓岮.jpg" 001-AJP1DX-25C0512003-效果图-鍓岮.jpg
ren "AJP1DX-25C0512003-效果图-鏍锋満鍓岰.jpg" 013-AJP1DX-25C0512003-效果图-鏍锋満鍓岰.jpg
ren "AJP1DX-25C0512003-效果图-鏍锋満鍓岯.jpg" 008-AJP1DX-25C0512003-效果图-鏍锋満鍓岯.jp
......后续一万多行类似的。
 楼主| 发表于 2025-5-30 01:16:03 | 显示全部楼层
主bat运行时,我看了下资源管理器进程,电脑内存一直是飙升,最后满内存主bat闪退。
发表于 2025-5-30 09:15:15 | 显示全部楼层
本帖最后由 77七 于 2025-5-30 09:24 编辑
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%d in ('dir /b /ad') do (
  4.         if exist "%%d\rename.bat" (
  5.                 pushd "%%d"
  6.                 for /f "delims=" %%a in ('find /i "ren " ^<"rename.bat"') do (
  7.                         for /f %%b in ("%%a") do (
  8.                                 if /i "%%b" equ "ren" (
  9.                                         %%a
  10.                                 )
  11.                         )
  12.                 )
  13.                 popd
  14.                 timeout /t 5
  15.         )
  16. )
  17. pause
复制代码


执行的时候关闭文件夹窗口
 楼主| 发表于 2025-5-30 10:01:31 | 显示全部楼层
回复 3# 77七


    运行这个bat会显示系统找不到指定的文件,但是我反复确认了子文件夹内是有rename.bat文件的呀。
发表于 2025-5-30 10:16:46 | 显示全部楼层
本帖最后由 77七 于 2025-5-30 10:20 编辑

回复 4# MRyang


   应该是重命名出错了,rename.bat 这个文件是什么编码格式?
如果是utf-8,把3楼代码开头加一行,chcp 65001
 楼主| 发表于 2025-5-30 10:35:37 | 显示全部楼层
回复 5# 77七


    是ANSI格式的。
我在你的bat文件上做了修改,运行是可以运行了,但是运行的时候还是会出现,每运行一个子文件夹内的bat文件,电脑内存会增加1%占用,一直到电脑内存被占满,主bat文件就会闪退。

=====================下面是在你的bat文件上做的修改
@echo off
cd /d "%~dp0"
for /f "delims=" %%d in ('dir /b /ad') do (
    if exist "%%d\rename.bat" (
        echo 正在处理目录: "%%d"
        pushd "%%d" || (
            echo 错误:无法进入目录 "%%d"
            goto :next
        )
        
        for /f "delims=" %%a in ('find /i "ren " "rename.bat" 2^>nul') do (
            for /f %%b in ("%%a") do (
                if /i "%%b" equ "ren" (
                    echo 执行命令: %%a
                    %%a
                )
            )
        )
        
        :next
        popd
        timeout /t 1 >nul
    )
)
pause

================================================================这是我运行时候bat窗口的信息,系统找不到文件是因为我把所有子文件夹内的文件名都整合到一个bat文件里面了,然后把这个bat文件放到每个子文件夹。
执行命令: ren "AJP1DX250501729-效果图-鍓岯.jpg" 006-AJP1DX250501729-效果图-鍓岯.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501729-效果图-鍓岮.jpg" 001-AJP1DX250501729-效果图-鍓岮.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501729-效果图-鏍锋満鍓岰.jpg" 013-AJP1DX250501729-效果图-鏍锋満鍓岰.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501729-效果图-鏍锋満鍓岯.jpg" 008-AJP1DX250501729-效果图-鏍锋満鍓岯.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501729-效果图-鏍锋満鍓岮.jpg" 003-AJP1DX250501729-效果图-鏍锋満鍓岮.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501729-效果图-妯$壒鍓嶇墖A.jpg" 002-AJP1DX250501729-效果图-妯$壒鍓嶇墖A.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501729-效果图-妯$壒鍓嶇墖B.jpg" 007-AJP1DX250501729-效果图-妯$壒鍓嶇墖B.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501729-效果图-妯$壒鍓嶇墖C.jpg" 012-AJP1DX250501729-效果图-妯$壒鍓嶇墖C.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501730-效果图-鍓嶅悗A.jpg" 004-AJP1DX250501730-效果图-鍓嶅悗A.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501730-效果图-鍓嶅悗B.jpg" 009-AJP1DX250501730-效果图-鍓嶅悗B.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501730-效果图-鍓嶅悗C.jpg" 014-AJP1DX250501730-效果图-鍓嶅悗C.jpg
系统找不到指定的文件。
执行命令: ren "AJP1DX250501730-效果图-鍓嶉?缁嗚妭鍥綛.jpg" 010-AJP1DX250501730-效果图-鍓嶉?缁嗚妭鍥綛.jpg
发表于 2025-5-30 10:37:16 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-30 10:53 编辑

回复 1# MRyang

一楼代码可简化如下

  1. @echo off &set "n=0" &for /f "delims=" %%a in ('dir /b/s/a-d "rename.bat" ') do (
  2.   set/a "n+=1" &cd /d "%%~dpa" &echo,正在运行 "%%a"
  3.   call rename.bat)
  4. echo,共完成 %n% 个子目录中的更名操作
  5. pause&exit/b
复制代码
也有可能是某个子目录中的 rename.bat 出问题,可从主批的进度屏显信息来确认是哪个子目录出错...
 楼主| 发表于 2025-5-30 10:45:31 | 显示全部楼层
回复 7# aloha20200628


    简化后的代码确实也有用,就是还是无法解决电脑内存持续飙升的问题,不到6分钟电脑内存就被用完了,bat文件闪退。

    难道是我子文件内的bat文件的问题?
 楼主| 发表于 2025-5-30 10:45:48 | 显示全部楼层
回复 7# aloha20200628


    简化后的代码确实也有用,就是还是无法解决电脑内存持续飙升的问题,不到6分钟电脑内存就被用完了,bat文件闪退。

    难道是我子文件内的bat文件的问题?
 楼主| 发表于 2025-5-30 10:46:28 | 显示全部楼层
回复  MRyang

一楼代码可简化如下也有可能是某个子目录中的 rename.bat 出问题,可从主批的进度屏显信息 ...
aloha20200628 发表于 2025-5-30 10:37


     简化后的代码确实也有用,就是还是无法解决电脑内存持续飙升的问题,不到6分钟电脑内存就被用完了,bat文件闪退。

    难道是我子文件内的bat文件的问题?
发表于 2025-5-30 10:47:02 | 显示全部楼层
把rename.bat名字改掉,rename本身就是一个命令。

评分

参与人数 1技术 +1 收起 理由
czjt1234 + 1 有道理,你不说还想不起来rename就是ren

查看全部评分

发表于 2025-5-30 10:58:35 | 显示全部楼层
本帖最后由 77七 于 2025-5-30 11:21 编辑

回复 6# MRyang


   这种内存随着时间占用增加,我不清楚,猜测还是timeout 时间不够长,改成暂停观察一下。
3楼pushd 文件夹出错,估计是dir 列出了隐藏+系统属性的目录,改为dir /b /ad-h,排除。
发表于 2025-5-30 11:00:40 | 显示全部楼层
回复 10# MRyang

先确认是哪个子目录的 rename.bat 开始退出,再从命令行单独运行这个 rename.bat 试看结果...
 楼主| 发表于 2025-5-30 11:05:00 | 显示全部楼层
回复  MRyang

先确认是哪个子目录的 rename.bat 开始退出,再从命令行单独运行这个 rename.bat 试看结果 ...
aloha20200628 发表于 2025-5-30 11:00



    做了几次实验,基本上每次都是运行了第66个子文件夹内的bat就会导致主bat闪退,因为这个时候电脑内存被用光了。我重新运行主bat文件,又可以开始,然后直至电脑内存耗尽闪退。
发表于 2025-5-30 11:08:34 | 显示全部楼层
回复 14# MRyang
单独运行第66个子批处出错吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:11 , Processed in 0.025168 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表