中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-10-01 05:56
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,279 会员排行
DOS批处理 & 脚本技术(批处理室) » 不用变量延迟[setlocal enableDelayedExpansion]也可以计算
可打印版本  5,401 / 49
第31楼 qzwqzw 发表于 2008-06-25 22:39
银牌会员 发帖 636 积分 2,343
我在editplus里设置了一个快捷输入!

啥都不说了,知音难觅啊
第32楼 quya 发表于 2008-06-25 22:42
高级用户 发帖 172 积分 558 来自 江苏
几次看见 ping/n 1 127.1, 我知道这个命令的本来意思,但用在类似于这样的代码起到了什么作用,能否给我这个土鸟解释下。

谢谢!
第33楼 metoo 发表于 2008-06-25 22:43
初级用户 发帖 93 积分 195
Originally posted by qzwqzw at 2008-6-25 10:38 PM:
人一多就显得有些乱了
再加上有几位喜欢编辑帖子的
看着看着就觉得思路连不上了

现在理顺一下
ppdos开始只是想简化楼主的代码
后来提出无奈 ...

鄙人的开始观点已经意识到错误了,基本统一楼上观点,
但是我认为ppdos的简写方式是不对的
第34楼 metoo 发表于 2008-06-25 22:44
初级用户 发帖 93 积分 195
Originally posted by qzwqzw at 2008-6-25 10:39 PM:

啥都不说了,知音难觅啊

哈哈,知音难觅,居然还有同好的
第35楼 metoo 发表于 2008-06-25 22:47
初级用户 发帖 93 积分 195
Originally posted by quya at 2008-6-25 10:42 PM:
几次看见 ping/n 1 127.1, 我知道这个命令的本来意思,但用在类似于这样的代码起到了什么作用,能否给我这个土鸟解释下。

谢谢!

搜索论坛关于批处理运行时间延迟方面的帖子
第36楼 PPdos 发表于 2008-06-25 22:51
高级用户 发帖 268 积分 783
关于缩成一行的代码 个人而言

是为了能更方便的在dos命令行中直接测试

个人觉得很有必要 测试程序并非多余

(只是我手懒 能一行写出来的都不想建个批文件)
第37楼 HAT 发表于 2008-06-25 22:51
版主 发帖 5,017 积分 9,023
Originally posted by quya at 2008-6-25 10:42 PM:
几次看见 ping/n 1 127.1, 我知道这个命令的本来意思,但用在类似于这样的代码起到了什么作用,能否给我这个土鸟解释下。

谢谢!

仔细阅读这个帖子
http://www.cn-dos.net/forum/viewthread.php?tid=8905#pid54227
第38楼 wxcute 发表于 2008-06-25 23:19
中级用户 发帖 211 积分 458
刚才居然中毒了,不知道是哪个可恶的家伙。很郁闷阿。

另editplus好用吗?原来有这样的好东东。用notepad习惯了,可是累阿,要改改。下载个先。
第39楼 quya 发表于 2008-06-26 10:11
高级用户 发帖 172 积分 558 来自 江苏
Originally posted by wxcute at 2008-6-25 11:19 PM:
刚才居然中毒了,不知道是哪个可恶的家伙。很郁闷阿。

另editplus好用吗?原来有这样的好东东。用notepad习惯了,可是累阿,要改改。下载个先。



大家以后中毒并且杀毒软件杀不了的话,可以找我。

我老土批处理虽然不行,可是手工杀毒的本事那是天下无双啊。
第40楼 zh159 发表于 2008-06-26 10:35
金牌会员 发帖 1,467 积分 3,687
缩成一行在命令行中直接测试而不显示set/a部分:
第41楼 hjkk123 发表于 2008-06-26 10:55
初级用户 发帖 82 积分 160
学习了
第42楼 qzwqzw 发表于 2008-06-26 13:58
银牌会员 发帖 636 积分 2,343
看来大家都缺乏彻底的实践精神啊!

讨论了这半天
只有经过了测试才发现ppdos以及zh159精简代码的大问题
因为他们所有的代码都经不起多次运行的考验

第一次运行结果都是对的
比如是7
但第二次运行结果却出错
本来应该是14,结果却仍然是7
第三次仍然错了,本来是21,结果却是14

也就是说在没有设置setlocal的变量环境下
环境变量是会随着运行次数递增的
但是call echo出来的却总是for执行之前的结果
除非call echo的变量此句代码运行前是空

最后的到的结论是
在连接语句中是无法完全用 call echo %var% 代替 echo !var! 的

所以我在26楼中间那段中所表明的最后论点是错的

当然这并不影响我在30楼提到的观点
for+call是可以完全替代for+延迟

至于40楼的代码除了以上提到的共性问题外
思路上也绕了弯子
想不显示set /a只需要一个@标记就可以了
用不着祭起echo off这把牛刀

(for /f %i in ('dir /b') do @set /a n+=1 >nul)&call echo 目录下有%n%

但是我仍然申明
这种缩写很没有意思
先执行for再执行echo %n%
既简单又清晰
还不会出现我所说的上述问题

何苦来哉!
第43楼 metoo 发表于 2008-06-26 15:21
初级用户 发帖 93 积分 195
Originally posted by qzwqzw at 2008-6-26 01:58 PM:
看来大家都缺乏彻底的实践精神啊!

讨论了这半天
只有经过了测试才发现ppdos以及zh159精简代码的大问题
因为他们所有的代码都经不起多次运行的 ...

对头,精简代码是错误的,仅仅相当于一个for完成后再echo一下
而楼主的代码确实可以带替延迟变量
可以看下我的27楼回复的代码,那个call和楼主的 call完全是两种不同的用法
第44楼 zh159 发表于 2008-06-26 16:17
金牌会员 发帖 1,467 积分 3,687
确实忘了在set/a前使用@

1、在命令行里使用,如果你不清空变量,下次的结果肯定会递增,这你不会不知道!
2、在命令行里使用,如果单纯的for后再来一个echo,那是两次输入命令(先输入一次for回车后再输入echo)。

PS:能不用call跳转最好不要用,对效率有一定的影响
第45楼 plp626 发表于 2008-06-26 18:53
银牌会员 发帖 1,020 积分 2,278
就一个变量延迟的讨论,竟然这么激烈,我是感觉楼主的代码没什么新鲜之处,我写"子过程"时常用到的.

不过我说个题外话, 楼主举的这个例子不必用for又用set(我喜欢在命令行下用批处理,喜欢信手拈来的感觉)

上一页  1 2 3 4  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023