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