![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 14:08 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [讨论]MSDOS环境下获取并分解系统时钟信息的批处理 |
| 可打印版本 3,462 / 7 |
| 第1楼 willsort | 发表于 2006-03-26 23:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
[讨论]MSDOS环境下获取并分解系统时钟信息的批处理 To All:
今天,根据网上的一段代码修改出一个可以在MSDOS下获取并分解系统时钟信息(日期、时间)的批处理。在MSDOS6.22/MSDOS7.10下运行通过。显然易见的是,程序的冗余度过高,存在大量的重复代码,所以它需要简化,也必然可以简化。本来是要自己修改的,只是最近还在忙其他的题目,无法分心;同时又感觉论坛讨论纯DOS批处理的主题日趋萎缩,所以将它贴上来,大家讨论一下,看有什么好的简化和改进方案,并对其中涉及到的DOS下的词法分析算法进行讨论和优化。当然,网上的此类代码应该还有许多,大家也可以提供更多的资源链接或者自己的想法。 %time%...DOS vs. Win98 http://groups.google.com/group/alt.msdos.batch/browse_thread/thread/faa7a7961815c004/7c979271a52e36e7 [ Last edited by willsort on 2006-3-26 at 23:01 ] |
|
| 第2楼 chenall | 发表于 2006-03-27 13:46 |
| 银牌会员 发帖 469 积分 1,276 来自 福建泉州 | |
|
我来贴一个,效率没有提高.减少了一些代码
[ Last edited by chenall on 2006-3-27 at 13:47 ] |
|
| 第3楼 willsort | 发表于 2006-03-29 17:02 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re chenall:
今天有闲可以回顾修改这个程序了,解决这个代码的冗余性问题,其实最主要的就是如何实现一系列变量连续性的取值和赋值。本来打算使用for对变量进行循环探测,遇到未赋值的变量即跳出赋值,但是此算法实现起来较为复杂,而且对最初变量的重复探测问题也是代码冗余性的一种表现。现在,看到兄的代码,联想起可以使用数据结构中的链表结构,而它正可通过命令行参数来实现,所以写下了这个修改版本。 这个版本,同时解决了变量没有被“传出”的问题,也增加了退出前清扫现场的语句。但是这个程序还存在许多缺陷,最致命的是,程序中的词法分析核心 choice 无法正确分析以/作为分隔符的字符串,而诸如国家代码为001(United States)的日期信息恰是以/作为分隔符,而代码中的所有语句都是以不依赖于“国家或区域代码”的通用性为设计目标,而这个缺陷完全架空了其他语句所作的努力。 另外,它还无法处理时间信息中的12小时制时间。 |
|
| 第4楼 willsort | 发表于 2006-03-30 23:14 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re All:
在找到了解决choice对/的兼容性问题,可以支持001的时钟信息了;而prompt的选择不仅简化了代码,同时还使时间保持为24小时制。对帖中代码进行了简单的修改得到以下代码,未进行日期变量名的匹配。 alt.msdos.batch > Documentation of CHOICE streaming parser http://groups.google.com/group/alt.msdos.batch/msg/5e1d0f360f172118 |
|
| 第5楼 HUNRYBECKY | 发表于 2006-12-14 02:26 |
| 银牌会员 发帖 442 积分 1,179 | |
|
厉害,看了下英文,看不懂。
|
|
| 第6楼 tyh | 发表于 2007-05-25 10:57 |
| 初级用户 发帖 43 积分 80 | |
|
我来积分。
|
|
| 第7楼 javenhmh | 发表于 2007-07-01 17:56 |
| 新手上路 发帖 2 积分 4 | |
|
厉害,顶顶顶啊~~````
|
|
| 第8楼 BWSkyer | 发表于 2008-10-27 15:33 |
| 中级用户 发帖 180 积分 367 来自 重庆 | |
|
提示 bad command or file name..
貌似 echo.exit|%comspec%/e:4096/k prompt set v=$d $t$_:>_tm.bat call _tm.bat echo.%v%&|%comspec%/e:4096/c %0 : Parse>_tm.bat for %%p in (_tm.bat* _tmset.bat*) do call %%p 这里出了问题... 我是DOS6.22, 应该不会啊... |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |