标题: [其他] 批处理写的抽奖软件(2008-09-03更新) [打印本页]
作者: batman 时间: 2008-9-2 10:27 标题: 批处理写的抽奖软件(2008-09-03更新)
&&昨晚公司举行了一场演讲比赛,同时进行了现场幸运抽奖,软
件是我写的,发上来给大家看看:
窗口设置如下:
[attach]278[/attach]
[attach]279[/attach]
[attach]280[/attach]
[attach]281[/attach]
[attach]282[/attach]
更新后的软件如下(9月3日更新):
作者: loverwind 时间: 2008-9-2 10:53
怎么看不到源代码呢?
作者: wangwei4106 时间: 2008-9-2 10:58
是啊
我门要代码……
作者: batman 时间: 2008-9-2 11:12
呵呵,源码如下:
主程序
- @echo off&setlocal enabledelayedexpansion
- mode con cols=50 lines=10&color 1f
- title 幸运观众抽奖软件 made by batman
- for /f "delims=" %%i in (a.txt) do set /a total+=1
- set "m=0"&echo 中奖名单:>name.txt
- :begin
- for /f "tokens=2 delims= " %%i in ('tasklist^|findstr "cmd.exe"') do set "pid=%%i"&goto next
- :next
- cls&echo.&echo ========^> 幸运抽奖 ^<========
- echo.&echo 总共有%total%名现场观众参与抽奖
- if %m% equ 0 echo.&set /p num= 请输入要抽取的人数:
- echo %num%|findstr "[^0-9]">nul&&goto begin
- if %num% geq %total% goto begin
- echo.&echo 请按任意键开始抽奖&pause>nul
- :again
- start lp.exe&set /a v=num-m
- cls&echo.&echo 已抽取%m%名幸运观众,还剩余%v%名
- echo.&echo 名单正在滚动中...
- echo.&echo 请按任意键抽取幸运观众&pause>nul
- for /f "tokens=2 delims= " %%i in ('tasklist^|findstr "cmd.exe"') do (
- if "%%i" neq "%pid%" taskkill /pid %%i /f>nul 2>nul
- )
- :loop
- set /a a=%random%%%%total%+1,n=0
- for /f "delims=" %%i in (a.txt) do (
- set /a n+=1
- if !n! equ %a% (
- findstr "%%i" 中奖.txt>nul&&goto loop||set "str=%%i"
- )
- )
- cls&echo.&echo.&echo 本次抽取的幸运观众是:%str%
- echo.&echo 请按任意键继续抽奖&pause>nul
- echo %str%>>name.txt
- set /a m+=1
- if %m% neq %num% goto again
- echo.&echo 所有幸运观众已抽取完毕,请按任意键退出
- pause>nul
复制代码
副程序
- @echo off&mode con cols=50 lines=5&color 1c
- title ***抽 奖 滚 动 窗 口***
- :lp
- for /f "delims=" %%a in (a.txt) do (
- echo %%a
- for /l %%i in (1,1,100) do echo>nul
- )
- goto lp
复制代码
作者: Batcher 时间: 2008-9-2 11:15
其实作为抽奖程序,最重要的是能够实现由领导决定谁获奖^_^
作者: batman 时间: 2008-9-2 21:50 标题: 更新一下
更新到可以设置奖项和获奖人数,最多可设置10个奖项,每个奖项最多抽取9人,抽奖名单存放
在num.txt,中奖名单存放在name.txt:
select.bat(主程序)- @echo off&setlocal enabledelayedexpansion
- mode con cols=50 lines=10&color 1f
- title 幸运抽奖软件 made by batman
- for /f "delims=" %%i in (num.txt) do set /a total+=1
- set "m=0"&echo 中奖名单:>name.txt
- :begin
- for /f "tokens=2 delims= " %%i in ('tasklist^|findstr "cmd.exe"') do set "pid=%%i"&goto next
- :next
- cls&echo.&echo ========^> 幸运抽奖 ^<========
- echo.&echo 总共有%total%人参与抽奖
- echo.&set /p num= 请输入奖项数量(1-10):
- echo %num%|findstr "[^0-9]">nul&&goto next
- if %num% geq 1 if %num% leq 10 goto contin
- goto next
- :contin
- set "codes=一二三四五六七八九十"
- set "code=!codes:~,%num%!"&set "n=1"
- :lp
- set "a%n%=%code:~,1%"
- cls&echo.&echo.&echo.
- set /p num%n%= 请输入!a%n%!等奖要抽取的人数:
- echo !num%n%!|findstr "[^0-9]">nul&&goto lp
- set /a totals+=num%n%
- if %totals% geq %total% goto lp
- set "code=%code:~1%"&set /a n+=1
- if defined code goto lp
- cls&set /a n-=1
- for /l %%i in (1,1,%n%) do (
- echo.&echo 设定!a%%i!等奖!num%%i!名
- set "code1=!a%%i!!code1!"&set "code2=!num%%i!!code2!"
- )
- echo.&echo 请按任意键开始抽奖&pause>nul
- :again
- start lp.bat&set /a v=%code2:~,1%-m
- cls&echo.&echo 已抽取%code1:~,1%等奖%m%名,还剩余%v%名
- echo.&echo 名单正在滚动中...
- echo.&echo 请按任意键抽取%code1:~,1%等奖&pause>nul
- for /f "tokens=2 delims= " %%i in ('tasklist^|findstr "cmd.exe"') do (
- if "%%i" neq "%pid%" taskkill /pid %%i /f>nul 2>nul
- )
- :loop
- set /a a=%random%%%%total%+1,n=0
- for /f "delims=" %%i in (num.txt) do (
- set /a n+=1
- if !n! equ %a% (
- findstr "%%i" name.txt>nul&&goto loop||set "str=%%i"
- )
- )
- cls&echo.&echo.&echo 本次抽取的%code1:~,1%等奖获得者是:%str%
- echo %code1:~,1%等奖:%str%>>name.txt
- set var=%var% %str%&set /a m+=1
- ping /n 2 127.1>nul
- if %m% neq %code2:~,1% goto again
- cls&echo.&echo.&echo %code1:~,1%等奖获得者:
- echo.&echo %var:~1%
- echo.&echo 所有%code1:~,1%等奖已抽取完毕,按键继续
- pause>nul
- set "code1=%code1:~1%"&set "code2=%code2:~1%"
- if defined code1 set "m=0"&set "var="&goto again
- echo.&echo 所有奖项已抽取完毕,请按任意键退出
- pause>nul
- start name.txt
复制代码
lp.bat(副程序)- @echo off&mode con cols=50 lines=5&color 1c
- title ***抽 奖 滚 动 窗 口***
- :lp
- for /f "delims=" %%a in (num.txt) do (
- echo %%a
- for /l %%i in (1,1,100) do echo>nul
- )
- goto lp
复制代码
[ 本帖最后由 batman 于 2008-9-2 22:11 编辑 ]
作者: youxi01 时间: 2008-9-2 23:59
愣是不会用,惭愧ing
作者: batman 时间: 2008-9-3 08:04
原帖由 youxi01 于 2008-9-2 23:59 发表
愣是不会用,惭愧ing
已再次转为exe文件。
作者: liutian523 时间: 2008-9-7 23:53 标题: 支持一下
路过,看看你写的P
作者: rubin 时间: 2008-9-13 00:32
强啊 哈哈
顶顶顶
作者: SmallK 时间: 2008-9-13 01:12
楼主你怎么两个附件啊?而且大小一样……
作者: 523066680 时间: 2009-5-16 15:49
也许是更新 或者是细节上不一样吧
作者: laywhx 时间: 2009-5-18 10:35
怎么不能提取中奖名单啊? 一点就退出了.
作者: yang23 时间: 2009-5-18 10:46
牛人啊啊啊啊啊
作者: zyswht 时间: 2009-6-18 23:52 标题: 哦
那个副程序怎么一直动呀 不会要用手动去停吧。。如果这样要怎么改呢
作者: a690984119 时间: 2009-6-21 11:02 标题: 源码
@echo off&setlocal enabledelayedexpansion
mode con cols=50 lines=10&color 1f
title 幸运抽奖软件 made by batman
for /f "delims=" %%i in (num.txt) do set /a total+=1
set "m=0"&echo 中奖名单:>name.txt
:begin
for /f "tokens=2 delims= " %%i in ('tasklist^|findstr "cmd.exe"') do set "pid=%%i"&goto next
:next
cls&echo.&echo ========^> 幸运抽奖 ^<========
echo.&echo 总共有%total%人参与抽奖
echo.&set /p num= 请输入奖项数量(1-10):
echo %num%|findstr "[^0-9]">nul&&goto next
if %num% geq 1 if %num% leq 10 goto contin
goto next
:contin
set "codes=一二三四五六七八九十"
set "code=!codes:~,%num%!"&set "n=1"
:lp
set "a%n%=%code:~,1%"
cls&echo.&echo.&echo.
set /p num%n%= 请输入!a%n%!等奖要抽取的人数:
echo !num%n%!|findstr "[^0-9]">nul&&goto lp
set /a totals+=num%n%
if %totals% geq %total% goto lp
set "code=%code:~1%"&set /a n+=1
if defined code goto lp
cls&set /a n-=1
for /l %%i in (1,1,%n%) do (
echo.&echo 设定!a%%i!等奖!num%%i!名
set "code1=!a%%i!!code1!"&set "code2=!num%%i!!code2!"
)
echo.&echo 请按任意键开始抽奖&pause>nul
:again
start lp.exe&set /a v=%code2:~,1%-m
cls&echo.&echo 已抽取%code1:~,1%等奖%m%名,还剩余%v%名
echo.&echo 名单正在滚动中...
echo.&echo 请按任意键抽取%code1:~,1%等奖&pause>nul
for /f "tokens=2 delims= " %%i in ('tasklist^|findstr "cmd.exe"') do (
if "%%i" neq "%pid%" taskkill /pid %%i /f>nul 2>nul
)
:loop
set /a a=%random%%%%total%+1,n=0
for /f "delims=" %%i in (num.txt) do (
set /a n+=1
if !n! equ %a% (
findstr "%%i" name.txt>nul&&goto loop||set "str=%%i"
)
)
cls&echo.&echo.&echo.&echo 本次抽取的%code1:~,1%等奖获得者是:%str%
echo %code1:~,1%等奖:%str%>>name.txt
set var=%var% %str%&set /a m+=1
ping /n 2 127.1>nul
if %m% neq %code2:~,1% goto again
cls&echo.&echo.&echo %code1:~,1%等奖获得者:
echo.&echo %var:~1%
echo.&echo 所有%code1:~,1%等奖已抽取完毕,按键继续
pause>nul
set "code1=%code1:~1%"&set "code2=%code2:~1%"
if defined code1 set "m=0"&set "var="&goto again
echo.&echo 所有奖项已抽取完毕,请按任意键退出
pause>nul
start name.txt
@echo off&setlocal enabledelayedexpansion
mode con cols=50 lines=10&color 1f
title 幸运抽奖软件 made by batman
for /f "delims=" %%i in (num.txt) do set /a total+=1
set "m=0"&echo 中奖名单:>name.txt
:begin
for /f "tokens=2 delims= " %%i in ('tasklist^|findstr "cmd.exe"') do set "pid=%%i"&goto next
:next
cls&echo.&echo ========^> 幸运抽奖 ^<========
echo.&echo 总共有%total%人参与抽奖
echo.&set /p num= 请输入奖项数量(1-10):
echo %num%|findstr "[^0-9]">nul&&goto next
if %num% geq 1 if %num% leq 10 goto contin
goto next
:contin
set "codes=一二三四五六七八九十"
set "code=!codes:~,%num%!"&set "n=1"
:lp
set "a%n%=%code:~,1%"
cls&echo.&echo.&echo.
set /p num%n%= 请输入!a%n%!等奖要抽取的人数:
echo !num%n%!|findstr "[^0-9]">nul&&goto lp
set /a totals+=num%n%
if %totals% geq %total% goto lp
set "code=%code:~1%"&set /a n+=1
if defined code goto lp
cls&set /a n-=1
for /l %%i in (1,1,%n%) do (
echo.&echo 设定!a%%i!等奖!num%%i!名
set "code1=!a%%i!!code1!"&set "code2=!num%%i!!code2!"
)
echo.&echo 请按任意键开始抽奖&pause>nul
:again
start lp.exe&set /a v=%code2:~,1%-m
cls&echo.&echo 已抽取%code1:~,1%等奖%m%名,还剩余%v%名
echo.&echo 名单正在滚动中...
echo.&echo 请按任意键抽取%code1:~,1%等奖&pause>nul
for /f "tokens=2 delims= " %%i in ('tasklist^|findstr "cmd.exe"') do (
if "%%i" neq "%pid%" taskkill /pid %%i /f>nul 2>nul
)
:loop
set /a a=%random%%%%total%+1,n=0
for /f "delims=" %%i in (num.txt) do (
set /a n+=1
if !n! equ %a% (
findstr "%%i" name.txt>nul&&goto loop||set "str=%%i"
)
)
cls&echo.&echo.&echo.&echo 本次抽取的%code1:~,1%等奖获得者是:%str%
echo %code1:~,1%等奖:%str%>>name.txt
set var=%var% %str%&set /a m+=1
ping /n 2 127.1>nul
if %m% neq %code2:~,1% goto again
cls&echo.&echo.&echo %code1:~,1%等奖获得者:
echo.&echo %var:~1%
echo.&echo 所有%code1:~,1%等奖已抽取完毕,按键继续
pause>nul
set "code1=%code1:~1%"&set "code2=%code2:~1%"
if defined code1 set "m=0"&set "var="&goto again
echo.&echo 所有奖项已抽取完毕,请按任意键退出
pause>nul
start name.txt
作者: keen 时间: 2009-6-21 12:21 标题: 回复 16楼 的帖子
不知道你想表达什么,如果仅仅是为了贴出源码,人家前面已经贴过了。
如果是为了修改其中的代码,请明示修改后的。
还有,代码超过一行时,请用CODE将代码括起来,以便他人复制。
Q:如何用code将代码括起来?
A:http://bbs.bathome.net/viewthread.php?tid=404&highlight=code
作者: wzahj 时间: 2009-12-4 15:50
支持牛人了啊啊啊啊 呵呵
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |