返回列表 发帖

[其他] 批处理写的抽奖软件(2008-09-03更新)

&&昨晚公司举行了一场演讲比赛,同时进行了现场幸运抽奖,软
件是我写的,发上来给大家看看:
窗口设置如下:





更新后的软件如下(9月3日更新):
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
2

评分人数

***共同提高***

支持牛人了啊啊啊啊  呵呵

TOP

回复 16楼 的帖子

不知道你想表达什么,如果仅仅是为了贴出源码,人家前面已经贴过了。
如果是为了修改其中的代码,请明示修改后的。
还有,代码超过一行时,请用CODE将代码括起来,以便他人复制。
Q:如何用code将代码括起来?
A:http://bbs.bathome.net/viewthread.php?tid=404&highlight=code
(*^_^*)

TOP

源码

@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


TOP

那个副程序怎么一直动呀 不会要用手动去停吧。。如果这样要怎么改呢

TOP

牛人啊啊啊啊啊

TOP

怎么不能提取中奖名单啊? 一点就退出了.

TOP

也许是更新 或者是细节上不一样吧
[url=][/url]

TOP

楼主你怎么两个附件啊?而且大小一样……
虚心使人进步 细节成就完美

TOP

强啊 哈哈
顶顶顶

TOP

支持一下

路过,看看你写的P

TOP

原帖由 youxi01 于 2008-9-2 23:59 发表
愣是不会用,惭愧ing

已再次转为exe文件。
***共同提高***

TOP

愣是不会用,惭愧ing

TOP

更新一下

更新到可以设置奖项和获奖人数,最多可设置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.txtCOPY
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 lpCOPY

[ 本帖最后由 batman 于 2008-9-2 22:11 编辑 ]
***共同提高***

TOP

其实作为抽奖程序,最重要的是能够实现由领导决定谁获奖^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表