这些天总在cn-dos上转,还真能发现不少好东西,今天要说的这个就比较好玩:
原文及最新更新见:http://www.cn-dos.net/forum/viewthread.php?tid=20669
rem by bagpipe
rem 这个是我从网上看到很多人用这个作为自己的签名图片,我想大家也许也看到过,我想想,编写成批处理也不是不可能,不过最后一步没有实现,有兴趣的还请大家一起来研究,下面是代码和文件........
@echo off
cls
echo Microsoft Windows 2000 [Version 5.00.2195]
echo (C) 版权所有 1985-2000 Microsoft Corp.
echo;
set/p=%cd%^><nul&ping -n 2 127.1>nul&set/p="开"<nul&ping -n 2 127.1>nul&set/p="机"<nul&ping -n 2 127.1>nul&echo;
echo '开机' 不是内部或外部命令,也不是可运行的程序
echo 或批处理文件。
echo.
set/p=%cd%^><nul&ping -n 2 127.1>nul&set/p="快"<nul&ping -n 2 127.1>nul&set/p="开"<nul&ping -n 2 127.1>nul&set/p="机"<nul&ping -n 2 127.1>nul&echo;
echo '快开机' 不是内部或外部命令,也不是可运行的程序
echo 或批处理文件
echo:
set/p=%cd%^><nul&ping -n 2 127.1>nul&set/p="他"<nul&ping -n 2 127.1>nul&set/p="妈"<nul&ping -n 2 127.1>nul&set/p="的"<nul&ping -n 2 127.1>nul&set/p="开"<nul&ping -n 2 127.1>nul&set/p="机"<nul&ping -n 2 127.1>nul&echo;
echo '他妈的开机' 不是内部或外部命令,也不是可运行的程序
echo 或批处理文件
echo;
set/p=%cd%^><nul&ping -n 2 127.1>nul&set/p="你"<nul&ping -n 2 127.1>nul&set/p="他"<nul&ping -n 2 127.1>nul&set/p="妈"<nul&ping -n 2 127.1>nul&set/p="的"<nul&ping -n 2 127.1>nul&set/p="快"<nul&ping -n 2 127.1>nul&set/p="开"<nul&ping -n 2 127.1>nul&set/p="机"<nul&ping -n 2 127.1>nul&echo.
echo '你他妈的快开机' 不是内部或外部命令,也不是可运行的程序
echo 或批处理文件
echo;
set/p=%cd%^><nul&ping -n 2 127.1>nul&set/p="操"<nul&ping -n 2 127.1>nul&set/p="!"<nul&ping -n 1 127.1>nul&set/p="!"<nul&ping -n 2 127.1>nul&set/p="不"<nul&ping -n 2 127.1>nul&set/p="开"<nul&ping -n 2 127.1>nul&set/p="机"<nul&ping -n 2 127.1>nul&set/p="我"<nul&ping -n 2 127.1>nul&set/p="就"<nul&ping -n 2 127.1>nul&set/p="砸"<nul&ping -n 2 127.1>nul&set/p="了"<nul&ping -n 2 127.1>nul&set/p="你"<nul&ping -n 2 127.1>nul&set/p="!"<nul&ping -n 4 127.1>nul&echo.
echo.
echo.
echo Loading Windows 2000...
echo ================================================================================
rem by 3742668
rem 进度条
@echo off
set b==
set /a flag = 1
call :began 80 rem 保存80个等号到变量b中
call :main %flag%
exit
:began rem 初始化b
set b=%b%=
set /a flag = %flag% + 1
if %flag% geq %1 goto :eof
goto began
:main rem 显示
set b=%b:~1%
set a=%a%0
set /a newflag = newflag + 1
cls
for /l %%i in (1,1,20) do @echo.
echo Loading Windows 2000...
echo %a:0=^>%%b%
call :delay 100 rem 数字可以调整显示速度
if %newflag% equ %1 goto :eof
goto main
:delay rem 延时
set /a num=num + 1
if %num% geq %1 (set num=) && goto :eof
goto delay
由于使用的结构是call和goto,所以代码很是臃肿,不过这种代码利于阅读,所以就用的这种机构。
这个脚本其实主要要解决的问题应该是显示字符">"的问题,因为CMD默认是把它当作重定向来使用的,所以直接echo >是会出错的,正确的方法应该是在前面用符号"^"来转义。在批处理中连续赋">"到变量中并在最后用echo显示出来要用到的^符号是惊人的,所以干脆就用了set命令的替换功能,先赋值0到变量a中,然后在显示的时候把0全部替换成^>,并把变量b依次减少一位,这样就实现了模拟进度的显示。
另外值得注意的一点就是在这个模拟显示中延时的问题,如果用ping来实现的话,由于ping在系统内部返回是需要消耗时间 的,所以就算用ping -n 1 -w 1 0.0.0.2 来处理都不能实现要求,在这个脚本中用的是goto延时,考虑到不同机器的时钟频率不尽相同,所以设置了延时过程(暂且叫它过程吧)的参数,如果觉得效果不好的话可以自行修改。(当然,利用wmic的强大功能也可以根据不同CPU的频率来自动调节参数,不过这就不是这个话题的讨论范围了)
rem by my3439955
@echo off
setlocal EnableDelayedExpansion
set _tmp_F_S=C:\_delay.vbs
set _tmp_F_F=C:\_tmp.tmp
set delay=50
set s1=开机
set s2=快开机
set s3=他妈的开机
set s4=你他妈到底开不开机
set s5=操!!再不开机老子砸了你!!
echo if WScript.Arguments.count = 1 then WScript.Sleep CInt(WScript.Arguments(0)) end if>%_tmp_F_S%
if exist %_tmp_F_F% del %_tmp_F_F%
for /L %%i in (1,1,4) do (call :show %%s%%i%% && call :fail %%s%%i%%)
call :show %s5%
call :suc
if exist %_tmp_F_S% del %_tmp_F_S%
if exist %_tmp_F_F% del %_tmp_F_F%
ping -n 1 127.1>nul
goto :EOF
:show
if "%~1"=="" goto :EOF
set s=%1
set /p ans=%cd%^><nul
set /A len=0
:comp_len
echo %%s:~%len%,1%% | find "ECHO">nul && goto end_comp
set /A "len+=1"
goto comp_len
:end_comp
set /A "len-=1"
for /L %%i in (0,1,%len%) do (cscript //nologo %_tmp_F_S% %delay% && set /p ans=!s:~%%i,1!<nul)
cscript //nologo %_tmp_F_S% 500
echo.
echo %cd%^>%1>>%_tmp_F_F%
echo.>>%_tmp_F_F%
goto :EOF
:fail
echo '%1' 不是内部或外部命令,也不是可运行的程序
echo 或批处理文件。
echo.
echo '%1' 不是内部或外部命令,也不是可运行的程序>>%_tmp_F_F%
echo 或批处理文件。>>%_tmp_F_F%
echo.>>%_tmp_F_F%
goto :EOF
:suc
ping -n 1 127.1>nul
set eqq================================================================================
set gtr=^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>
echo Loading Windows 2000 ...>>%_tmp_F_F%
echo.>>%_tmp_F_F%
for /L %%i in (0,1,79) do (set /A new=2*%%i && type %_tmp_F_F% && echo !gtr:~0,%%i!!eqq:~%%i,80! && ping -n 1 127.1>nul && cls)
goto :EOF
rem by bg
rem 一个进度条,不错
@echo off
color 1f
title.
mode con lines=10
rem 进度条 ▉▉▉▉▉
set work=0
set n=0
set mo=0
set number=0
rem all是总数
set all=60
set time=%all%
:show
:check
if %number% GTR %mo% set num=%num%▉&set /a mo=%mo%+1&goto check
:2
cls
echo 进度: %n% / %all% 剩余时间:%time%秒
echo.
echo.
echo 完成 %work% %%%
echo.
if not "%num%"=="" echo %num%
if not "%num%"=="" echo %num%
if %work%==100 goto end
ping 127.1 -n 3 >nul
set /a n=%n%+1
set /a time=%all%-%n%
set /a work=(%n%)*100/(%all%)
set /a number=%work%/3
set /a number=%number%+1
goto show
endlocal
:end
endlocal
pause>nul
rem by zjl5
rem 这个写的简直太帅了
@echo off
setlocal EnableDelayedExpansion
for %%i in (开机 快开机 他吗的快开机 你他妈到底开不开机 操!!再不开机老子砸了你!!) do (set ,=%%i&(set/p=C:\^><nul)&set /a n+=3
call :delay 200
for /l %%j in (0 1 !n!) do (call set/p=%%,:~%%j,1%%<nul&call :delay 80)
if !n! equ 15 goto :start
echo.&echo.'%%i' 不是内部或外部命令,也不是可运行的程序
echo.或批处理文件。&echo.)
:start
echo\&echo\&echo\&echo\
for /l %%i in (1 1 27) do (set/p= <nul)
set/p=Microsoft Windows 2000...<nul
echo\&set/p= <nul
for /l %%i in (1 1 77) do (set/p== <nul)
for /l %%i in (1 1 78) do (set/p=<nul)
for /l %%i in (1 1 77) do (set/p=^><nul&ping -n 1 127.1>nul)
pause >nul&exit
:delay
for /l %%i in (1,1,%1) do (error>nul 2>nul)
goto :eof
引用:
用批处理模拟搞笑开机画面(操!!再不开机老子砸了你!!)http://www.yongfa365.com/item/YongPiChuLiMoNiGaoXiaoKaiJiHuaMian.html