中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用批处理文件实现对子目录中batch的脚本执行
作者:
标题: 如何用批处理文件实现对子目录中batch的脚本执行 上一主题 | 下一主题
tampoco
初级用户





积分 24
发帖 9
注册 2007-9-23
状态 离线
『楼 主』:  如何用批处理文件实现对子目录中batch的脚本执行

我想递归地执行当前目录树下的所有bat文件,并且利用每个目录下的bat文件执行该目录下的程序并在该目录下生成程序执行结果的txt文件,请问如何能够做到?谢谢

2007-9-23 21:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 2 楼』:  

执行目录树下所有的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
执行批处理必须把自己排除在外,不然,可就。。。。惨了。!!

2007-9-24 00:05
查看资料  发送邮件  发短消息 网志  OICQ (52721292)  编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by yoyodos at 2007-9-24 00:05:
执行目录树下所有的bat文件,可以这样;)
[code]
@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 "这里写上你的源程序的名称,包括后缀名" .......

2007-9-24 00:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 4 楼』:  

俺已经排除了,呵呵

2007-9-24 00:43
查看资料  发送邮件  发短消息 网志  OICQ (52721292)  编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 5 楼』:  

呵呵....冇看到..
不好意思1

2007-9-24 00:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tampoco
初级用户





积分 24
发帖 9
注册 2007-9-23
状态 离线
『第 6 楼』:  

谢谢两位的热心回答!我试过了脚本,确实可以用。不过还有个问题想请教。
如果我在子目录中的脚本文件是这样的:

@echo off
echo aaa >>aaa.txt

那么当执行目录树根处的脚本(就是你们写的那个),会把aaa导入到根目录的aaa.txt中,而不是在对应的子目录中。我感觉可能是子目录中%cd%环境变量没变的原因,是吗?有解决的办法吗?谢谢!

2007-9-24 09:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 7 楼』:  

建议你在程序里把路径写全了,哈哈,要不容易乱呀
默认是当前目录

2007-9-24 11:02
查看资料  发送邮件  发短消息 网志  OICQ (52721292)  编辑帖子  回复  引用回复
tampoco
初级用户





积分 24
发帖 9
注册 2007-9-23
状态 离线
『第 8 楼』:  

谢谢你,问题解决了。补全子目录相对于与根目录后面的路径就可以了。
如根目录为c:\aaa
子目录为c:\aaa\bbb\ccc
则在脚本中执行程序就要这样写:
bbb\ccc\xxx.exe >bbb\ccc\xxx.txt

2007-9-24 11:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 9 楼』:  

不客气~~

2007-9-24 11:13
查看资料  发送邮件  发短消息 网志  OICQ (52721292)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: