中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 10:42
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » [原创]抽奖————————模拟线程
可打印版本  3,800 / 23
第1楼 s11ss 发表于 2008-04-28 13:33
银牌会员 发帖 566 积分 2,098
[原创]抽奖————————模拟线程
操作注册表好像比产生临时文件更麻烦。
另外,对于此bat,由于临时文件的“生存时间”很短,因此在Windows Shell下,你看不到它的产生与消失。



[ Last edited by s11ss on 2008-4-28 at 04:59 PM ]
第2楼 zhitingkey 发表于 2008-04-28 13:52
初级用户 发帖 32 积分 84 来自 湖北
不错哦,能不能说说原理啊`详细解释一下你这个代码!好么`
第3楼 s11ss 发表于 2008-04-28 14:11
银牌会员 发帖 566 积分 2,098
Originally posted by zhitingkey at 2008-4-28 01:52 PM:
不错哦,能不能说说原理啊`详细解释一下你这个代码!好么`


if "%1" equ "-t" goto t
::-t是启动“线程”的参数

start /b %~s0 -t
::再打开一个cmd.exe来启动不断变换标题的“线程”;但这个新开的cmd.exe还是使用当前cmd窗口,而不是再打开一个cmd窗口——由参数/b控制

echo 请按任意键停止. . .&pause>nul
cd.>t

start /b del t^&exit
::再打开一个cmd.exe来删除t并退出新的cmd.exe。在t的“生存期间”,“线程”检测到t而退出(“线程”退出)。

echo 请按任意键开始. . .&pause>nul
第4楼 plp626 发表于 2008-04-28 14:25
银牌会员 发帖 1,020 积分 2,278
你这次怎么有说start/b 启动的是线程了,”多了个cmd.exe----是进程“

兄能否发个多进程的专帖大家一起讨论----进程之间的通信,多进程还是很具有潜力,像这个帖子,和那个等待输入的帖子,cmd的单进程是无法实现。
第5楼 s11ss 发表于 2008-04-28 14:30
银牌会员 发帖 566 积分 2,098
Originally posted by plp626 at 2008-4-28 02:25 PM:
你这次怎么有说start/b 启动的是线程了,”多了个cmd.exe----是进程“

兄能否发个多进程的专帖大家一起讨论----进程之间的通信,多进程还是很具有潜 ...

我加了引号啊~~~~~

讨论???你不是发帖讨论过了么?结果也有了啊:
注册表、临时文件和start /b
没有其他的方法了吧?
第6楼 plp626 发表于 2008-04-28 14:38
银牌会员 发帖 1,020 积分 2,278
我不敢说没有,
一个修改系统环境变量date,另一个再改回来,只是这个方法要改系统日期,怕有点危险。



有没有其他的不是很重要的系统环境变量供修改?我没找到...

这多进程貌视还可以轻松实现密码不回显呢,真的有必要发个帖子讨论

[ Last edited by plp626 on 2008-4-28 at 02:42 PM ]
第7楼 s11ss 发表于 2008-04-28 14:42
银牌会员 发帖 566 积分 2,098
系统环境变量修改后不会立马生效,要重启后才会生效
第8楼 plp626 发表于 2008-04-28 14:53
银牌会员 发帖 1,020 积分 2,278

你也可以再打开一个cmd
echo %date%
试试看有没变化
第9楼 zh159 发表于 2008-04-28 15:16
金牌会员 发帖 1,467 积分 3,687
系统日期属于比较特别的环境变量,它是根据系统的实际日期实时变化的

BUG:有时候会提示“找不到 ...文件”也就是批处理本身

[ Last edited by zh159 on 2008-4-28 at 03:20 PM ]
第10楼 plp626 发表于 2008-04-28 15:17
银牌会员 发帖 1,020 积分 2,278
我把你的代码稍改下,用该date的方法,不生成临时文件。
你的系统日期现在若是:2008-04-28 星期一,会感觉不到日期被修改:


----------------------------------------
楼下:
echo %date%后面没星期几试试这个代码


[ Last edited by plp626 on 2008-4-28 at 03:38 PM ]
第11楼 s11ss 发表于 2008-04-28 15:20
银牌会员 发帖 566 积分 2,098
我说的那种系统环境变量,是静态的吧?就是set列出来的。
我说的生效,是说彻底改变这个变量,而不仅仅是在当前cmd窗口下有效。

如date、time是动态环境变量,可以随时改变并生效吧?不过random却又是个例外~~~~~~~~~~~

这些动态环境变量的应用貌似还得讨论下。

另外我这边echo %date%的结果是2008-04-28。(没有星期几)
第12楼 s11ss 发表于 2008-04-28 15:39
银牌会员 发帖 566 积分 2,098
如此反复修改日期,实在不是上策
第13楼 plp626 发表于 2008-04-28 15:41
银牌会员 发帖 1,020 积分 2,278
是呀,哪赶快发帖讨论吧
-------------------------
你不发我发,高人多着呢,我就不信没人响应。。。

[ Last edited by plp626 on 2008-4-28 at 04:02 PM ]
第14楼 zh159 发表于 2008-04-28 17:37
金牌会员 发帖 1,467 积分 3,687
看看是否可以利用%ERRORLEVEL%
第15楼 s11ss 发表于 2008-04-28 17:43
银牌会员 发帖 566 积分 2,098
Originally posted by zh159 at 2008-4-28 05:37 PM:
看看是否可以利用%ERRORLEVEL%

试过了,貌似不行。
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023