中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于bat调用自身的运行次数和dos下用for计算产生的问题
« [1] [2] »
作者:
标题: 关于bat调用自身的运行次数和dos下用for计算产生的问题 上一主题 | 下一主题
dy2003310
初级用户





积分 180
发帖 68
注册 2006-12-21
来自 China
状态 离线
『楼 主』:  关于bat调用自身的运行次数和dos下用for计算产生的问题

各位兄弟姐妹,在《批处理最完整人性化教程(转&精)》这一篇贴子里说到1、
————给出一个很有意思的脚本,有兴趣的朋友可以实验一下。例十(默认脚本文件名为a.bat):

call a.bat

一定要在DOS窗口下执行,否则只会看到一个窗口一闪而过,看不到最后结果。等执行完后,当脚本被执行了1260次,别忘了想一下到底是为什么!————


其中那个1260如何去证明呀???
到底是什么道理呀???

2、这篇贴子还说到————
————例二十一:

@echo off
dir a.ttt /a & dir a.txt || exit

例二十二:

@echo off
dir a.ttt /a && dir a.txt || exit

这两个例子和数学悖论有关系吗???
数学悖论小弟只是知道有那么一回事,觉得挺有趣的!!!

[ Last edited by namejm on 2006-12-25 at 10:39 AM ]

2006-12-25 05:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
win2ye
初级用户





积分 58
发帖 22
注册 2005-12-15
状态 离线
『第 2 楼』:  

问题1、只要你运行,不一会批处理就会被终止,就会出现提示:

  Quote:
******  B A T C H   R E C U R S I O N  exceeds STACK limits ******
Recursion Count=1240, Stack Usage=90 percent
******       B A T C H   PROCESSING IS   A B O R T E D      ******

大意应该是批处理循环次数超出限制
不知道翻译得对不对

2006-12-25 05:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 3 楼』:  

查看运行了多少次的过程的方法(虽然溢出时系统已经告诉了~:)

先进入cmd,再运行 a.bat。 a.bat 内容如下:
@echo off
set /a a+=1
echo %a%
call a.bat
另:那篇贴子的地址附上,方便其他网友查阅~:)


批处理最完整人性化教程(转&精)
http://www.cn-dos.net/forum/viewthread.php?tid=18482&fpage=1



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-25 05:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dy2003310
初级用户





积分 180
发帖 68
注册 2006-12-21
来自 China
状态 离线
『第 4 楼』:  

谢楼上兄弟了!
那即是说dos本身对循环次数有一个限制了??
这是还有一篇贴子说到在dos下面求一系列数的和,如1到100的。
如果是1到100000或者其它,会不会出现其它问题???因为如果批处理循环次数有一个限制的话!!!
麻烦兄弟再帮我一下

2006-12-25 05:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
win2ye
初级用户





积分 58
发帖 22
注册 2005-12-15
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by dy2003310 at 2006-12-25 05:54:
谢楼上兄弟了!
那即是说dos本身对循环次数有一个限制了??
这是还有一篇贴子说到在dos下面求一系列数的和,如1到100的。
如果是1到100000或者其堮..

我也没试过,楼主不如自己先试下,实践出真知

上面的循环是引用死循环,FOR语句构成的循环和它不同,应该不存在这个限制

2006-12-25 05:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dy2003310
初级用户





积分 180
发帖 68
注册 2006-12-21
来自 China
状态 离线
『第 6 楼』:  

呵呵,谢谢redtek兄
刚用你贴出的方法试验了
看到最后的数字是1241
那个1260到底怎么回事

2006-12-25 06:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dy2003310
初级用户





积分 180
发帖 68
注册 2006-12-21
来自 China
状态 离线
『第 7 楼』:  

回win2ye兄,
小弟昨晚就是用for试了,
我那台机子的cpu使用率到了100%,死机了
后来缩了范围却得出一个负数
机房快关门了,小弟不能及时回各位兄弟贴子了
请见谅

2006-12-25 06:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by dy2003310 at 2006-12-25 06:03:
呵呵,谢谢redtek兄
刚用你贴出的方法试验了
看到最后的数字是1241
那个1260到底怎么回事

首先,我在XP下测试最后的数字是1241
其次,我在2000下测试最后的数字是1268
没有2003系统,感觉是不同系统略有区别吧。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-25 06:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
win2ye
初级用户





积分 58
发帖 22
注册 2005-12-15
状态 离线
『第 9 楼』:  

我是XPSP2的系统,限制次数是1240

2006-12-25 06:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dy2003310
初级用户





积分 180
发帖 68
注册 2006-12-21
来自 China
状态 离线
『第 10 楼』:  

刚上来
呵呵,先谢谢各位热心的兄弟
小弟刚才回去再试了一下,也是1241(xp系统的)

真是非常感激ccwan兄帮我在2000下试验那个结果!!!

再回win2ye兄,小弟刚才回去又试了一次那个for求值问题,
做了一些代码,请win2ye兄和其它有兴趣的兄弟都来指正一下。

2006-12-25 08:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dy2003310
初级用户





积分 180
发帖 68
注册 2006-12-21
来自 China
状态 离线
『第 11 楼』:  

噢,怎么上传附件??
再试下,
新人,见谅

在这里向版兄说声sorry,是关于那标题的事啦

2006-12-25 08:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dy2003310
初级用户





积分 180
发帖 68
注册 2006-12-21
来自 China
状态 离线
『第 12 楼』:  

http://zhenlove.com.cn/cndos/fileup/files/dos下用for计算的问题.zip
看下行不行

2006-12-25 08:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dy2003310
初级用户





积分 180
发帖 68
注册 2006-12-21
来自 China
状态 离线
『第 13 楼』:  

各位兄弟
http://zhenlove.com.cn/cndos/fileup/files/dos下用for计算的问题.zip
这个地址是我上传的关于在dos下计算的问题
例如1到100
1到10000000等等
计算的结果中居然有负数
是不是dos下的数值类型造成的问题呢???
例如它也分整型,单精度型什么的

2006-12-25 08:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 14 楼』:  


  CMD下面只能处理-2147483648——2147483647之间的数,过大过小都会溢出。


2006-12-25 09:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dy2003310
初级用户





积分 180
发帖 68
注册 2006-12-21
来自 China
状态 离线
『第 15 楼』:  

呵呵,终于有回音了
麻烦lxmxn兄帮我试验一下下面这些代码

@ECHO OFF
setlocal EnableDelayedExpansion
time /t
for /l  %%i in (1,2,100000) do set /a num=!num!+%%i
echo 计算结果是:!num!
time /t
pause


在我的机子上它的运行结果如下
18:26
计算结果是:-1794967296
18:26
请按任意键继续. . .

2006-12-25 09:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: