中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]抽奖————————模拟线程
« [1] [2] »
作者:
标题: [原创]抽奖————————模拟线程 上一主题 | 下一主题
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『楼 主』:  [原创]抽奖————————模拟线程

操作注册表好像比产生临时文件更麻烦。
另外,对于此bat,由于临时文件的“生存时间”很短,因此在Windows Shell下,你看不到它的产生与消失。


::抽奖        {s11ss@www.cn-dos.net/forum 2008-4-28}
@echo off
if exist t del t
:m
if "%1" equ "-t" goto t
start /b %~s0 -t
echo 请按任意键停止. . .&pause>nul
cd.>t
start /b del t^&exit
echo 请按任意键开始. . .&pause>nul
goto m
:t
if exist t exit
title 获奖观众的号码是:%random%
goto t


[ Last edited by s11ss on 2008-4-28 at 04:59 PM ]

2008-4-28 13:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zhitingkey
初级用户





积分 84
发帖 32
注册 2007-9-17
来自 湖北
状态 离线
『第 2 楼』:  

不错哦,能不能说说原理啊`详细解释一下你这个代码!好么`

2008-4-28 13:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 3 楼』:  



  Quote:
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

2008-4-28 14:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 4 楼』:  

你这次怎么有说start/b 启动的是线程了,”多了个cmd.exe----是进程“

兄能否发个多进程的专帖大家一起讨论----进程之间的通信,多进程还是很具有潜力,像这个帖子,和那个等待输入的帖子,cmd的单进程是无法实现。



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-4-28 14:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by plp626 at 2008-4-28 02:25 PM:
你这次怎么有说start/b 启动的是线程了,”多了个cmd.exe----是进程“

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

我加了引号啊~~~~~

讨论???你不是发帖讨论过了么?结果也有了啊:
注册表、临时文件和start /b
没有其他的方法了吧?

2008-4-28 14:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 6 楼』:  

我不敢说没有,
一个修改系统环境变量date,另一个再改回来,只是这个方法要改系统日期,怕有点危险。
echo 2008-04-29 星期二|date

echo 2008-04-28 星期一|date
有没有其他的不是很重要的系统环境变量供修改?我没找到...

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

[ Last edited by plp626 on 2008-4-28 at 02:42 PM ]



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-4-28 14:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 7 楼』:  

系统环境变量修改后不会立马生效,要重启后才会生效

2008-4-28 14:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 8 楼』:  


@echo off
::如果你的系统日期现在不是2008-04-29 星期二
echo 修改前:%date%
echo 2008-04-29 星期二|date >nul
echo 修改后:%date%
pause
你也可以再打开一个cmd
echo %date%
试试看有没变化



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-4-28 14:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 9 楼』:  

系统日期属于比较特别的环境变量,它是根据系统的实际日期实时变化的

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

[ Last edited by zh159 on 2008-4-28 at 03:20 PM ]



2008-4-28 15:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 10 楼』:  

我把你的代码稍改下,用该date的方法,不生成临时文件。
你的系统日期现在若是:2008-04-28 星期一,会感觉不到日期被修改:
@echo off
if "%date:~-1%"==二 echo 2008-04-28 星期一|date >nul
:m
if "%1" equ "-t" goto t
start /b %~s0 -t
echo 请按任意键停止. . .&pause>nul
echo 2008-04-29 星期二|date >nul
start /b echo 2008-04-28 星期一^|date ^>nul^&exit
echo 请按任意键开始. . .&pause>nul
goto m

:t
if "%date:~-1%"=="二" exit
title 获奖观众的号码是:%random%
goto t
----------------------------------------
楼下:
echo %date%后面没星期几试试这个代码
@echo off
if "%date:~0,1%"=="3" echo 2008-04-28|date>nul
:m
if "%1" equ "-t" goto t
start/b %~s0 -t
echo 请按任意键停止. . .&pause>nul
echo 3008-04-28|date>nul
start/b echo 2008-04-28^|date^>nul^&exit
echo 请按任意键开始. . .&pause>nul
goto m

:t
if "%date:~0,1%"=="3" exit
title 获奖观众的号码是:%random%
goto t
[ Last edited by plp626 on 2008-4-28 at 03:38 PM ]



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-4-28 15:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 11 楼』:  

我说的那种系统环境变量,是静态的吧?就是set列出来的。
我说的生效,是说彻底改变这个变量,而不仅仅是在当前cmd窗口下有效。

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

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

另外我这边echo %date%的结果是2008-04-28。(没有星期几)

2008-4-28 15:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 12 楼』:  

如此反复修改日期,实在不是上策

2008-4-28 15:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 13 楼』:  

是呀,哪赶快发帖讨论吧
-------------------------
你不发我发,高人多着呢,我就不信没人响应。。。

[ Last edited by plp626 on 2008-4-28 at 04:02 PM ]



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-4-28 15:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 14 楼』:  

看看是否可以利用%ERRORLEVEL%



2008-4-28 17:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by zh159 at 2008-4-28 05:37 PM:
看看是否可以利用%ERRORLEVEL%

试过了,貌似不行。

2008-4-28 17:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: