中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-22 15:32
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用批处理模拟搞笑开机画面 查看 15,536 回复 52
16 发表于 2006-05-16 19:53 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线

还有版主 下面代码为什么 只显示 b%%而不是123? 变量不可以堪套吗?
CODE:
--------------------------------------------------------------------------------

set a=123456789
set b=3
echo %a:~0,%b%%


这就是为什么要用setlocal ENABLEDELAYEDEXPANSION来启用延时的环境变量的原因。当然,并不是说不启用延时的环境变量就不能实现变量的嵌套,比如用显示命令的叠加来转换:
echo %a:~0,^%b%^% | findstr .
17 发表于 2006-05-16 20:45 ·  中国 上海 华为云
中级用户
★★
积分 256
发帖 93
注册 2006-03-26 22:12
20年会员
UID 52853
性别 男
来自 广东
状态 离线
谢谢了
18 发表于 2006-05-17 11:23 ·  中国 北京 顺义区 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144
发帖 425
注册 2005-10-20 00:00
20年会员
UID 43784
来自 北京
状态 离线
延时是采用3742668兄的代码,不过效果我觉得不怎么好
@echo off
setlocal enabledelayedexpansion
set /a b=81
set a=">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>================================================================================"


:back
cls
for /l %%i in (1,1,20) do @echo.
echo Loading Windows 2000...
set /a b-=1
echo !a:~%b%,80!
if !b! == 1 goto :eof
call :delay 80
goto back


:delay
set /a num=num + 1
if %num% geq %1 (set num=) && goto :eof
goto delay
19 发表于 2006-07-24 16:25 ·  中国 山西 运城 电信
中级用户
★★
积分 241
发帖 131
注册 2005-09-28 19:01
20年会员
UID 42920
性别 男
状态 离线

1.jpg为有@echo off 的结果!
2.jpg为没有@echo off的结果!
本来的系统的winxp sp1 !:o
附件
1.JPG
2.JPG
房东说:这娃是个好孩子!
20 发表于 2006-07-26 02:59 ·  中国 山西 运城 移动
中级用户
★★
积分 241
发帖 131
注册 2005-09-28 19:01
20年会员
UID 42920
性别 男
状态 离线
现在在SP2的环境下测试,情况依旧!
房东说:这娃是个好孩子!
21 发表于 2006-07-27 05:22 ·  中国 广东 中山 广东瑞江科技有限公司BGP数据中心
中级用户
★★
积分 384
发帖 189
注册 2005-10-19 13:12
20年会员
UID 43709
性别 男
状态 离线
XP SP2运行正常.
附件
111.JPG
22 发表于 2006-10-02 03:49 ·  中国 山东 淄博 联通
中级用户
★★
积分 272
发帖 99
注册 2006-06-02 09:12
20年会员
UID 56414
状态 离线
基于以上诸位的探讨
我来给个总结性的发言
批处理如下


@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
23 发表于 2006-10-03 09:08 ·  中国 广东 广州 电信
新手上路
积分 10
发帖 3
注册 2006-10-03 07:39
19年会员
UID 64393
状态 离线
Originally posted by my3439955 at 2006-10-2 03:49:
基于以上诸位的探讨
我来给个总结性的发言
批处理如下


@echo off
setlocal EnableDelayedExpansion

set _tmp_F_S=C:\_delay.vbs
set _tmp_F_F=C:\_tmp.tmp
set delay ...



行是行/但是到了最后会一直重复前面的内容
24 发表于 2006-10-05 22:28 ·  中国 山东 淄博 联通
中级用户
★★
积分 272
发帖 99
注册 2006-06-02 09:12
20年会员
UID 56414
状态 离线
不明白楼上的意思
是不是说最后屏幕的闪烁?
25 我写的,个人感觉还好。 发表于 2006-10-08 23:43 ·  中国 湖北 武汉 电信
初级用户
积分 118
发帖 34
注册 2006-01-10 09:01
20年会员
UID 48727
状态 离线
@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
26 发表于 2006-10-09 01:01 ·  中国 浙江 衢州 电信
银牌会员
★★★
积分 1,270
发帖 548
注册 2004-05-31 00:00
22年会员
UID 25754
性别 男
状态 离线
很有意思的,试了一下,真的可行。
27 发表于 2006-10-09 10:42 ·  中国 广西 柳州 电信
初级用户
积分 44
发帖 18
注册 2006-10-09 09:30
19年会员
UID 65057
状态 离线
太精彩了!!!
28 发表于 2006-10-09 21:51 ·  中国 甘肃 兰州 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
Originally posted by bg at 2006-10-8 23:43:
@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 %num ...

很好哈~正想要这个的
29 发表于 2006-11-04 11:46 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
30 发表于 2006-11-05 05:39 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
就是,晕,抄也不写出处,bs
论坛跳转: