![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 05:37 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 98下仅用批处实现“开机n次后执行某一命令“ |
| 可打印版本 2,195 / 29 |
| 第16楼 redtek | 发表于 2007-01-23 22:42 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
网友的代码参与和fffcw兄的主持,这个帖子既精彩又吸引人,欣赏~:)
|
|
| 第17楼 zh159 | 发表于 2007-01-23 23:27 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by fffcw at 2007-1-23 00:12: 4 楼98的搞错一个地方 ![]() set Num=%Num%* >Num.bat echo set Num=* 改为: set Num=%Num%* >Num.bat echo set Num=%Num% XP下的: PS:直接用时间你根本无法判断启动次数 [ Last edited by zh159 on 2007-1-23 at 11:31 AM ] |
|
| 第18楼 lotus516 | 发表于 2007-01-23 23:33 |
| 高级用户 发帖 246 积分 551 | |
|
setlocal enabledelayedexpansion是启用延迟的环境变量扩展,可能98不支持,你说的不建立文件,直接用时间写成判断语句是不是更简洁呢,我认为只凭时间是不能判断次数的,最后还是要加上次数的变量!!我的可能不是最好但我的只有一个文件,而且是每天会自动清零,也就是说你即使是天天用也不用改代码也不用去删除昨天产生的垃圾,而且我的只会产生一个文件!8楼的不错,扩展性很好,但会产生很多垃圾,并且你要天天用的话你还的手动去删除昨天产生的文件夹,并且最大的弱点正如你说的如果我要设定100次。。。。。。,这个就很让人....还有这种冗长代码的效率是很低的!!四楼应该是里面最好的,但要天天用也得手动删除昨天用过的!!还有次数多*就可观了,数起次数来,嘿嘿!
楼上的set Num=%Num%+1少个参数/a吧!! [ Last edited by lotus516 on 2007-1-23 at 11:46 PM ] |
|
| 第19楼 qzwqzw | 发表于 2007-01-24 00:20 |
| 银牌会员 发帖 636 积分 2,343 | |
|
98/DOS命令行不支持命令扩展以及其它许多cmd特性
大家可以查阅一下cmd下的多少特性是用到命令扩展的 就知道98/DOS下的批处理编程与cmd下完全不是同一范畴 ------------------------------------------------------------------------------- 想试试98/DOS批处理又没有98和DOS环境的朋友 可以用XP/2003的command来模拟 因为command下的批处理语法与98/DOS基本相近 用法:开始-运行-command-批处理名 |
|
| 第20楼 zh159 | 发表于 2007-01-24 00:25 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
re:lotus516
98下set无/a /p参数,所以你2楼的98下的代码无效 楼主只说明了“开机n次后执行某一命令”,并未说明“每天”,所以没加上日期判断 另:你用日期文件名判断方式也有误: set /a wj=%date:~0,4%%date:~5,2%%date:~8,2%-1 只要在1号这天,就会出错:20070101-1=20070100 不应该用日期名作为文件名判断,应该将日期写入固定的名称的文件内 |
|
| 第21楼 qzwqzw | 发表于 2007-01-24 00:45 |
| 银牌会员 发帖 636 积分 2,343 | |
|
希望各位能明白楼主的意思
开机N次执行某一命令 与日期和时间没有任何关系 我完全可以一天之内开机N次完成条件 也可以一年开机N-1次不完成条件 所以凡是用到日期和时间的全部走了弯路 关键是在于开机次数这个数据的存取地点与存取方式 |
|
| 第22楼 zh159 | 发表于 2007-01-24 00:49 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
这是我以前写的一段XP的可以利用自身计数的批处理,不产生另外多余的文件(当然,得手动清空计数),自己参考一下
[ Last edited by zh159 on 2007-1-23 at 11:52 AM ] |
|
| 第23楼 qzwqzw | 发表于 2007-01-24 01:28 |
| 银牌会员 发帖 636 积分 2,343 | |
|
这是临时拼凑的一段代码
简单测试,大约可以在DOS/CMD下运行 -------------------------------------------------------- 因为使用%temp%\bootnum.txt存放文件 所以喜欢开机清除垃圾文件的朋友小心了 考虑过使用当前路径 不过对于放在光盘介质和在非批处理路径下调用的情况并不合适 所以放弃 ------------------------------------------------- 因为运行时必须加参数 所以喜欢直接点击执行批处理的朋友该郁闷了 参数1,指定满足执行条件的程序运行次数(放在autoexec.bat中就是启动次数) 参数2,执行条件满足后所要执行的程序,如果带参数,用引号引起 参数3,/c清除以前的运行记录,仅在条件次数超出时使用 |
|
| 第24楼 zch1366 | 发表于 2007-01-24 01:33 |
| 中级用户 发帖 148 积分 326 | |
|
等待大家好消息
|
|
| 第25楼 xiaoqiangzx | 发表于 2007-01-24 04:27 |
| 初级用户 发帖 12 积分 34 | |
|
重啟七次運行某命令 @ECHO OFF
COUNT COUNT.TXT 7 (計算重啟開機的次數 reboot (重啟電腦的命令) IF ERRORLEVEL 1 GOTO NG GOTO END : NG echo reset fail !!! :END IF EXIST COUNT.TXT DEL COUNT.TXT md xxx 建立文件夾 rd xxx 去掉文件夾 ps: count reboot 命令在論壇到處都有,給小弟在此提供下,望有用 望我們 共同努力 ̄ ̄ [ Last edited by xiaoqiangzx on 2007-1-23 at 03:40 PM ] 附件 run.rar (9.13 KiB) |
|
| 第26楼 lotus516 | 发表于 2007-01-24 09:54 |
| 高级用户 发帖 246 积分 551 | |
Originally posted by zh159 at 2007-1-24 00:25: 多谢zh159指点,没有考虑到每月第一天的情况! 原来command是可以模拟dos的,还以为只是cmd的英文版呢! |
|
| 第27楼 fffcw | 发表于 2007-01-24 11:43 |
| 新手上路 发帖 9 积分 19 | |
|
多谢大家捧场,由于每次上来时间都比较晚了,还有些工作需要去做
所以不能逐一致谢! 综合看了一下今天的回复,其中: 1) 4楼和17楼提到的增加文本中*号个数的办法以及代码都让我这个门都没入的眼前一亮,想到过追加字符,然后判断字符数量,但是只想到基本的>>符号 " set Num=%Num%* >Num.bat echo set Num=%Num% " 这样的句子对菜鸟很有教育意义 至于18楼说的"手动删除昨天用过的!!还有次数多*就可观" 可以加入自动删除的命令 *号过多的问题就要改变一下程序结构了,应该是当*号达到一定数量时比如十个,就跳转执行另一十个*号(或别的符号更好)的循环,用两个循环既可以实现20次的计数而且*号不会过多;也可以实现10X10就是100的计数,我估计对你们来说不难做到,应该是循环嵌套;当然三个循环就可以累计1000次了,这样就可以满足多数需要 [ Last edited by fffcw on 2007-1-23 at 11:58 PM ] |
|
| 第28楼 fffcw | 发表于 2007-01-24 12:03 |
| 新手上路 发帖 9 积分 19 | |
|
2)
Lotus516的积极参与让帖子很活跃 你在18楼提到用时间直接判断的问题 的确时间或日期和开机次数建立起联系应该也不是简单的事情,但是适用于每天或每周只做固定开机次数的场合。比如一天只开2次,或每周只开5次等等,对于这种特定情况我想实现命题对你来说有可能比较简单(不知道98下能不能得到纯粹数字的时间字符,find应该可以做到),可以不作为讨论范围。 然而引申出我另一个问题,win98、win2000和winXP下,借用你在2楼的代码,键入"echo %date:~0,4%"得到的结果是否一样呢?win98下应该无效,win2000下,我上午试验了好像不是你的预期,需要改变其中两个数字,winXP下刚试没问题 请高手们再给点拨一下! [ Last edited by fffcw on 2007-1-24 at 12:01 AM ] |
|
| 第29楼 fffcw | 发表于 2007-01-24 12:12 |
| 新手上路 发帖 9 积分 19 | |
|
3)
谢谢zh159,你在17楼的修改,和22楼的程序,我有时间再验证 不会让你白写 23楼qzwqzw的也一样,今天没有精力试了 25楼提供的可执行程序非常8错,3Q3Q! |
|
| 第30楼 fffcw | 发表于 2007-01-24 12:46 |
| 新手上路 发帖 9 积分 19 | |
|
4)我手上有一本《DOS6.22实用大全》作者Peter Norton
清华出版社出版,1996年8月第二版第三次印刷,标价70元RMB 当年这样的价格还是比较NB的 其中说到find命令的功能,能够实现在如执行dir命令后只显示指定字符以后的字符 书中举例"dir|find "free" "将会只显示磁盘剩余空间 " chkdsk|find"disk space" "将察看当前盘总容量 简单的用法不难,稍微复杂一点的应用我就不会了 我设想另一个方案: 第一次开机运行建立空文件夹下一个0号文件 第二次开机使用 dir|find "这里换成有效的字符串" 得到该文件夹内文件数1,然后建立1号文件 类推达到10个后清空文件夹,另建一个判断用的中间文件比如10号文件 以后开机仍建立0号文件,达到10个后清空文件夹 判断10文件存在建立20号文件 这样临时文件最多为10多个 至于次数的设定就不难了,仅用判断文件的存在即可 仅作咨询,高手可以给几行关键代码,不用麻烦大家作出完整程序了 比起上面的追加*号来弯子绕多了 但与我已经完成的那个笑料程序相比,这个弯绕的不够远! 把复杂搞简单相当困难,但是把简单尽可能的搞复杂就更困难! 有了个好理由,我开始得意于我的那个还没公布的大制作 论坛真不好拾道,工作人员够辛苦 都回家觉觉吧 对了,临时文件应该是必不可少的,因为要关机保存计数 只是有多有少,越高的手临时文件会尽可能少 再少也有止境,要往多里整那可是无止境的啊!继续得意。。。 不知道压缩包怎么上传 [ Last edited by fffcw on 2007-1-25 at 11:40 PM ] |
|
| 上一页 1 2 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |