![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 17:23 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [分享]%var%代替语句执行 |
| 可打印版本 2,994 / 9 |
| 第1楼 523066680 | 发表于 2008-12-19 10:46 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
[分享]%var%代替语句执行 文/523066680
发表于:http://www.cn-dos.net/forum/viewthread.php?tid=45240&fpage=1 首先,声明的是这个用法并不是我发明的,我只是也想到了同样的方法而已,为了发扬这个方法,所以 发表文章. 第一次想到这样玩是在做贪吃蛇的时候,相关分析:http://www.cn-dos.net/forum/viewthread.php?tid=43369&fpage=1&highlight=%2B523066680 23楼 这里是相关部分: 可见适当的利用这个性质可以省很多事儿的. 举个简单的例子吧,ping,一般的延迟都是用ping(尤其是特效) 经常会看到一些脚本多处使用到ping 假如够懒,就可以用 %变量% 取代ping 像这样: set "ping=ping -n 2 127.1>nul" %ping% pause 改变ping 的时间,可以用 %ping: 2 = 3 % 接下来的多出ping 就直接%ping%了 呵呵 不过感觉也太懒了点. 这只是一个示范,感觉是长一点的句子的话比较体现优势.当然特殊字符也是一个问题. (这里不讨论) 我们还可以用 %var% 执行 for 语句,还可以是多重镶套,我发现的有趣的是for 的结尾处的括号用 %var2% 表示仍然可行,所以 还可以用另一个 for 语句 给这个%var% 设定多重镶套, 然后设定结尾括号个数... 应用例子可以见: http://www.cn-dos.net/forum/viewthread.php?tid=41243&page=3&sid=8HBO3h#pid317040 27楼 以及 怎样生成一个纯数字的密码字典 http://www.cn-dos.net/forum/viewthread.php?tid=33139&pid=317042&page=1&sid=8HBO3h#pid317042 6楼 我说过了,这个方法不是我发明的,我只是发现并且作为一个提倡者,我查了一下系统自带的批处理 其中一个名为 msdtcvtr.bat (纯英文的...汗) 里面的一个例子也很好的, 这里是开头部分 @echo off rem *************** start of 'main' set DEBUG=0 if "%DEBUG%"=="1" (set TRACE=echo) else (set TRACE=rem) rem Note that right now there is a bug in tracerpt.exe cause of which you might want to use tracefmt.exe instead. rem set the value 1 if you want to use tracefmt.exe instead set USE_TRACE_FMT=1 %TRACE% The value of variable USE_TRACE_FMT is %USE_TRACE_FMT% : : 大家看到 TRACE 这个变量了吧,他决定了是否向用户显示一句话呢,我觉得这是个特别号的例子. 因为后面有多处 %TRACE% "可能要显示的信息" 假如这些全都用if 来判断是否显示,估计代码.... [ Last edited by 523066680 on 2008-12-19 at 10:52 ] |
|
| 第2楼 wxcute | 发表于 2008-12-19 11:13 |
| 中级用户 发帖 211 积分 458 | |
|
还是你用得比较好。
我在修改你的贪吃蛇的时候也用了一个,不过我的就有点儿画蛇添足的味道了。 |
|
| 第3楼 523066680 | 发表于 2008-12-20 16:52 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
居然没人看...... 哎 我太小白 了
尽做些吃力不讨好的事 |
|
| 第4楼 zjw767676 | 发表于 2009-04-17 11:27 |
| 新手上路 发帖 8 积分 15 | |
|
酒香不怕巷子深!我从bathome赶来顶你了!!O(∩_∩)O~
|
|
| 第5楼 netbenton | 发表于 2009-04-17 12:20 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
学了就要用
|
|
| 第6楼 523066680 | 发表于 2009-04-18 05:55 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
网吧匆匆之间,我的大脑嗡的一下,愣是没看出来怎么用。
[ Last edited by 523066680 on 2009-4-18 at 05:57 ] |
|
| 第7楼 netbenton | 发表于 2009-04-18 06:15 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
运行后要求输入一行批处理命令,
输入命令回车后,(直接回车为退出) 即测试出该命令运行1000次所用时间(毫秒) 然后出现的提示符: 是否保存记录[Y][R]: 输入y把刚测试的结果存入到文档, 输入r则重测试一次,多次测试后存入时,会取平均结果 输入其它则又回到重新输入命令行状态。 ================= 该工具可测度对比出用什么命令更高效 但是有些命令是测不了的,如:exit,会直接退出了。 |
|
| 第8楼 523066680 | 发表于 2009-04-18 21:02 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
哦,明白了,发此贴做个回复。
|
|
| 第9楼 hugreen | 发表于 2009-04-18 22:28 |
| 初级用户 发帖 15 积分 23 | |
|
谢谢分享
收藏了 TRACE那个例子很不错,令人联想到C++对应的TRACE功能,算法写得越好,批处理和高级语言靠得越近 |
|
| 第10楼 yishanju | 发表于 2009-04-18 23:02 |
| 银牌会员 发帖 1,357 积分 1,488 | |
|
初学批处理写的是命令,后写的是命令集合,再往下精通了就会当成一们编程语言来写了
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |