标题: 如何用批处理文件实现对子目录中batch的脚本执行
[打印本页]
作者: tampoco
时间: 2007-9-23 21:59
标题: 如何用批处理文件实现对子目录中batch的脚本执行
我想递归地执行当前目录树下的所有bat文件,并且利用每个目录下的bat文件执行该目录下的程序并在该目录下生成程序执行结果的txt文件,请问如何能够做到?谢谢
作者: yoyodos
时间: 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% tmp.txt') do start %%m
del /q tmp.txt
pause
执行批处理必须把自己排除在外,不然,可就。。。。惨了。!!
作者: scriptor
时间: 2007-9-24 00:34
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 "这里写上你的源程序的名称,包括后缀名" .......
作者: yoyodos
时间: 2007-9-24 00:43
俺已经排除了,呵呵
作者: scriptor
时间: 2007-9-24 00:44
呵呵....冇看到..
不好意思1
作者: tampoco
时间: 2007-9-24 09:36
谢谢两位的热心回答!我试过了脚本,确实可以用。不过还有个问题想请教。
如果我在子目录中的脚本文件是这样的:
@echo off
echo aaa >>aaa.txt
那么当执行目录树根处的脚本(就是你们写的那个),会把aaa导入到根目录的aaa.txt中,而不是在对应的子目录中。我感觉可能是子目录中%cd%环境变量没变的原因,是吗?有解决的办法吗?谢谢!
作者: yoyodos
时间: 2007-9-24 11:02
建议你在程序里把路径写全了,哈哈,要不容易乱呀
默认是当前目录
作者: tampoco
时间: 2007-9-24 11:08
谢谢你,问题解决了。补全子目录相对于与根目录后面的路径就可以了。
如根目录为c:\aaa
子目录为c:\aaa\bbb\ccc
则在脚本中执行程序就要这样写:
bbb\ccc\xxx.exe >bbb\ccc\xxx.txt
作者: yoyodos
时间: 2007-9-24 11:13
不客气~~