中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-08 02:45
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用批处理文件实现对子目录中batch的脚本执行 查看 853 回复 8
楼 主 如何用批处理文件实现对子目录中batch的脚本执行 发表于 2007-09-23 21:59 ·  中国 上海 虹口区 电信
初级用户
积分 24
发帖 9
注册 2007-09-23 21:34
18年会员
UID 98135
性别 男
状态 离线
我想递归地执行当前目录树下的所有bat文件,并且利用每个目录下的bat文件执行该目录下的程序并在该目录下生成程序执行结果的txt文件,请问如何能够做到?谢谢
2 发表于 2007-09-24 00:05 ·  中国 北京 网联光通
初级用户
★★
积分 128
发帖 59
注册 2007-09-15 23:03
18年会员
UID 97496
性别 男
状态 离线
执行目录树下所有的bat文件,可以这样;)

@echo off
cd.>tmp.txt
set myname=%0
for /r %%i in (*.bat) do echo %%i>>tmp.txt
for /f %%m in ('findstr /v /c:%myname% tmp.txt') do start %%m
del /q tmp.txt
pause


执行批处理必须把自己排除在外,不然,可就。。。。惨了。!!
3 发表于 2007-09-24 00:34 ·  中国 北京 中国科学院研究生院玉泉四公寓
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
Originally posted by yoyodos at 2007-9-24 00:05:
执行目录树下所有的bat文件,可以这样;)

@echo off
cd.>tmp.txt
set myname=%0
for /r %%i in (*.bat) do echo %%i>>tmp.txt
for /f %%m in ('findstr /v /c:%myname% ...



加上判断就可以了

if /i "%%~ni" neq "这里写上你的源程序的名称,包括后缀名" .......
4 发表于 2007-09-24 00:43 ·  中国 北京 网联光通
初级用户
★★
积分 128
发帖 59
注册 2007-09-15 23:03
18年会员
UID 97496
性别 男
状态 离线
俺已经排除了,呵呵
5 发表于 2007-09-24 00:44 ·  中国 北京 中国科学院研究生院玉泉四公寓
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
呵呵....冇看到..
不好意思1
6 发表于 2007-09-24 09:36 ·  中国 上海 电信
初级用户
积分 24
发帖 9
注册 2007-09-23 21:34
18年会员
UID 98135
性别 男
状态 离线
谢谢两位的热心回答!我试过了脚本,确实可以用。不过还有个问题想请教。
如果我在子目录中的脚本文件是这样的:

@echo off
echo aaa >>aaa.txt

那么当执行目录树根处的脚本(就是你们写的那个),会把aaa导入到根目录的aaa.txt中,而不是在对应的子目录中。我感觉可能是子目录中%cd%环境变量没变的原因,是吗?有解决的办法吗?谢谢!
7 发表于 2007-09-24 11:02 ·  中国 北京 广电网
初级用户
★★
积分 128
发帖 59
注册 2007-09-15 23:03
18年会员
UID 97496
性别 男
状态 离线
建议你在程序里把路径写全了,哈哈,要不容易乱呀
默认是当前目录
8 发表于 2007-09-24 11:08 ·  中国 上海 电信
初级用户
积分 24
发帖 9
注册 2007-09-23 21:34
18年会员
UID 98135
性别 男
状态 离线
谢谢你,问题解决了。补全子目录相对于与根目录后面的路径就可以了。
如根目录为c:\aaa
子目录为c:\aaa\bbb\ccc
则在脚本中执行程序就要这样写:
bbb\ccc\xxx.exe >bbb\ccc\xxx.txt
9 发表于 2007-09-24 11:13 ·  中国 北京 广电网
初级用户
★★
积分 128
发帖 59
注册 2007-09-15 23:03
18年会员
UID 97496
性别 男
状态 离线
不客气~~
论坛跳转: