![]() |
中国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的简写方式是不对的 |
|
| 第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: 搜索论坛关于批处理运行时间延迟方面的帖子 |
|
| 第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: 仔细阅读这个帖子 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: 大家以后中毒并且杀毒软件杀不了的话,可以找我。 我老土批处理虽然不行,可是手工杀毒的本事那是天下无双啊。 |
|
| 第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: 对头,精简代码是错误的,仅仅相当于一个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 |