中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 22:28
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]********cmd标题栏动画******** 查看 1,038 回复 11
楼 主 [原创]********cmd标题栏动画******** 发表于 2007-12-12 17:58 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
@echo off&setlocal enabledelayedexpansion	%title {s11ss 2007-12-12}%
call :m "www.cn-dos.net" " " 4 50
title Press any key to exit...&pause>nul&title %comspec%&exit/b
:m
set s=%~1
set c=%~2
set n=%3
set "d=for /l %%z in (1,1,%4) do cd."
set t=%s%
:c
set t=%t:~1%&set/a l+=1
if not "%t%" equ "" goto :c
for /l %%a in (1,1,%l%) do %d%&title !s:~0,%%a!
for /l %%a in (%l%,-1,1) do %d%&title !s:~0,%%a!
set/a t=%l%-1
for /l %%a in (1,1,%n%) do set "space=!space!%c%"&for /l %%b in (1,1,%t%) do set s%%b%%a=!s:~0,%%b!!space!!s:~%%b,1!
for /l %%a in (1,1,%t%) do for /l %%b in (%n%,-1,1) do %d%&title !s%%a%%b!
title !s!&%d%
for /l %%a in (%t%,-1,1) do for /l %%b in (1,1,%n%) do %d%&title !s%%a%%b!
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
everest79 +15 2007-12-12 22:00
2 发表于 2007-12-12 22:01 ·  中国 广东 广州 番禺区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
高产作家呀,能不能要动画节奏放慢点哈
3 发表于 2007-12-12 22:37 ·  中国 北京 电信
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
哪里哪里。
这句中的最后一个数控制速度:
call :m "www.cn-dos.net" " " 4 50
4 发表于 2007-12-12 22:57 ·  中国 陕西 西安 电信
初级用户
★★
积分 85
发帖 73
注册 2007-09-23 23:00
18年会员
UID 98146
性别 男
状态 离线
拜读了您的程序,很是佩服,思路很好啊。

请教一个问题,如果我要在此基础上,再添加程序功能,在下面的程序中如果想导入你的程序该怎么实现。也就是象:
set x=y
.....
:1
%x%
象这样,请赐教。
5 发表于 2007-12-12 23:06 ·  中国 北京 电信
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
把包括标签行:m以内的标签行:m的下面所有的行插入到你的批处理文件尾部,再在你的批处理文件中用call :m 参数来调用,记得用exit/b或goto :eof把:m和批处理主体分开。

[ Last edited by s11ss on 2007-12-12 at 11:07 PM ]
6 发表于 2007-12-12 23:29 ·  中国 陕西 西安 电信
初级用户
★★
积分 85
发帖 73
注册 2007-09-23 23:00
18年会员
UID 98146
性别 男
状态 离线
好,谢谢!我试试。
7 发表于 2007-12-12 23:38 ·  中国 陕西 西安 电信
初级用户
★★
积分 85
发帖 73
注册 2007-09-23 23:00
18年会员
UID 98146
性别 男
状态 离线
按照您的指点,好象不能实现标题栏动画。显示的是!s!,如下图所示。可能是我没有搞对方法,您能举个例子说明一下吗?谢谢!

[ Last edited by shim on 2007-12-12 at 11:48 PM ]
附件
cmd.GIF
8 发表于 2007-12-13 12:25 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
不介意把你的代码粘过来吧?
9 发表于 2007-12-13 14:25 ·  中国 陕西 西安 电信
初级用户
★★
积分 85
发帖 73
注册 2007-09-23 23:00
18年会员
UID 98146
性别 男
状态 离线
@echo off

color 2f
for /f "delims=" %%i in ("%0") do set cdname=%%~dpi
ECHO.
ECHO.升级程序正在查找升级所必须的系统文件,请稍后......
path %SystemRoot%\system32\wbem;%SystemRoot%\system32\;%cdname%
call s.vbs
for /f "skip=1" %%a in ('wmic logicaldisk where "DriveType=3" get caption') do (
for /f "delims=" %%_ in ('dir /s/b/a-d %%a\×××.shim 2^>nul') do (if exist "%%_" set ppath=%%~dp_&goto :end)
)
if not defined ppath echo/请确认是否已安装本程序!!!升级程序找不到系统文件,无法完成升级!!!
pause&exit/b

:end
xcopy *.*/s "%ppath%"/y
cls
color 1f
@ECHO OFF
@ECHO OFF
echo ┢━━━━━━━━━ 程 序 提 示 框 ━━━━━━━━━┪
echo ┃ ┃
echo ┃ ▓ ▓ ▄■▄ ▄■▄ ┃
echo ┃ ▓▓▓▓▓ ▄■▄ ▄■▄ ┃
ECHO ┃ ▓ ▓ ■▼■ ■▼■ ┃
ECHO ┃ ▓▓▓▓▓▓ ■▼■ ■▼■ ┃
echo ┃ ▓ ▓ ▓ ▄▲▄▄▄▲▄ 正在操作…… ┃
echo ┃ ▓ ▓▓ ▓ ▌ ▌ ┃
ECHO ┃ ▓ ▓ ▓ ▓ ▓■▲■ ■▲■ 谢谢您的使用! ┃
ECHO ┃ ▓▓ ■▲■ ■▲■ ┃
ECHO ┃ ┃
ECHO ┃ ┃
echo ┗━━━━━━━━━━━━━━━━┑ ┍━━━━━━━━━━┛
ECHO │ ∕
echo │∕
echo ∕
ECHO.
ECHO off
dd 3000
ECHO. 您的程序路径为:%ppath%
ECHO.
dd 3000
ECHO.
ECHO. 正在启动程序,请稍候.....
dd 3000
cd /d "%ppath%"
start ×××.exe
dd 3000
ECHO off
ECHO.
ECHO. -----------==== 程序完成! 祝您使用愉快!!! ====-----------
ECHO.
ECHO.
ECHO.请稍后,升级程序将自动退出.....
dd 3000
ECHO Y|DEL "%ppath%"\××.exe
ECHO Y|DEL "%ppath%"\××.exe
exit


上述是我的代码,请赐教该怎么样和你的代码使用即可显示你的标题动画,又能完成我的程序工作?
10 发表于 2007-12-13 14:31 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
只能互相嵌入吧~~~~~~~
bat1代码
bat2代码
bat1代码
bat2代码
.
.
.
11 发表于 2007-12-13 16:13 ·  中国 北京 联通
中级用户
★★
替身
积分 269
发帖 130
注册 2007-03-23 21:41
19年会员
UID 82683
性别 女
状态 离线
感觉楼主的代码对于CMD窗口标题栏闪烁效果太抖动,可能是FOR语句延时造成的这种情况,俺也粗略的写了一个,效果稍微好些,但不敢保证,呵呵,没事儿玩玩而已


@echo off&setlocal enabledelayedexpansion
set "b=www.cn-dos.net"
set "k=-"
for /l %%t in (1,1,60) do set "q=!q! "
call:9527
call:9527 %k%
for %%? in (w=w;w,. c=n,-;d o,s=.,n,e;t) do (
call :bagpipe %%? !p!
set p=!p!%%?)
title Code By Ansipeter&goto:eof
:9527
for /l %%a in (1,1,14) do title !b:~0,%1%%a!&ping -n 1 127.1>nul
goto:eof
:bagpipe
for /l %%n in (1,1,60) do title %2!q:~%%n!%1
ping -n 1 -w 100 127.1>nul
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
shim +2 2007-12-14 00:39
12 发表于 2007-12-13 18:38 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
用for处理,速度可以很快,但太闪了,而且很耗CPU。

而用ping处理,速度不能很快,但不太闪,不很耗CPU。
可以把set "d=for /l %%z in (1,1,%4) do cd."
下加一行set "d=ping -n %4 0 >nul"试试效果。(相应的把50换成1)

[ Last edited by s11ss on 2007-12-13 at 06:43 PM ]
论坛跳转: