中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-15 15:23
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]抽奖————————模拟线程 查看 3,560 回复 23
楼 主 [原创]抽奖————————模拟线程 发表于 2008-04-28 13:33 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
UID 97070
性别 男
状态 离线
操作注册表好像比产生临时文件更麻烦。
另外,对于此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 ]
2 发表于 2008-04-28 13:52 ·  中国 广东 深圳 福田区 电信
初级用户
积分 84
发帖 32
注册 2007-09-17 12:42
UID 97604
性别 男
来自 湖北
状态 离线
不错哦,能不能说说原理啊`详细解释一下你这个代码!好么`
3 发表于 2008-04-28 14:11 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
UID 97070
性别 男
状态 离线
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 发表于 2008-04-28 14:25 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
你这次怎么有说start/b 启动的是线程了,”多了个cmd.exe----是进程“

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

进入网盘(各种工具)~~ 空间~~cmd学习
5 发表于 2008-04-28 14:30 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
UID 97070
性别 男
状态 离线
Originally posted by plp626 at 2008-4-28 02:25 PM:
你这次怎么有说start/b 启动的是线程了,”多了个cmd.exe----是进程“

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

我加了引号啊~~~~~

讨论???你不是发帖讨论过了么?结果也有了啊:
注册表、临时文件和start /b
没有其他的方法了吧?
6 发表于 2008-04-28 14:38 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
我不敢说没有,
一个修改系统环境变量date,另一个再改回来,只是这个方法要改系统日期,怕有点危险。
echo 2008-04-29 星期二|date

echo 2008-04-28 星期一|date


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

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

[ Last edited by plp626 on 2008-4-28 at 02:42 PM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
7 发表于 2008-04-28 14:42 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
UID 97070
性别 男
状态 离线
系统环境变量修改后不会立马生效,要重启后才会生效
8 发表于 2008-04-28 14:53 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
@echo off
::如果你的系统日期现在不是2008-04-29 星期二
echo 修改前:%date%
echo 2008-04-29 星期二|date >nul
echo 修改后:%date%
pause

你也可以再打开一个cmd
echo %date%
试试看有没变化
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
9 发表于 2008-04-28 15:16 ·  中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
系统日期属于比较特别的环境变量,它是根据系统的实际日期实时变化的

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

[ Last edited by zh159 on 2008-4-28 at 03:20 PM ]
10 发表于 2008-04-28 15:17 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
我把你的代码稍改下,用该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学习
11 发表于 2008-04-28 15:20 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
UID 97070
性别 男
状态 离线
我说的那种系统环境变量,是静态的吧?就是set列出来的。
我说的生效,是说彻底改变这个变量,而不仅仅是在当前cmd窗口下有效。

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

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

另外我这边echo %date%的结果是2008-04-28。(没有星期几)
12 发表于 2008-04-28 15:39 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
UID 97070
性别 男
状态 离线
如此反复修改日期,实在不是上策
13 发表于 2008-04-28 15:41 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
是呀,哪赶快发帖讨论吧
-------------------------
你不发我发,高人多着呢,我就不信没人响应。。。

[ Last edited by plp626 on 2008-4-28 at 04:02 PM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
14 发表于 2008-04-28 17:37 ·  中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
看看是否可以利用%ERRORLEVEL%
15 发表于 2008-04-28 17:43 ·  中国 北京 海淀区 首都在线数据中心
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
UID 97070
性别 男
状态 离线
Originally posted by zh159 at 2008-4-28 05:37 PM:
看看是否可以利用%ERRORLEVEL%

试过了,貌似不行。
论坛跳转: