中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-22 23:59
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]COLOR TIME 彩色时间屏保 查看 10,219 回复 47
16 发表于 2007-01-29 03:27 ·  美国 缅因州
中级用户
★★
积分 316
发帖 152
注册 2006-06-18 13:01
20年会员
UID 57204
性别 男
状态 离线
P处理能玩到这个境界,实在是牛人啊
收下来慢慢品味
17 发表于 2007-01-29 14:31 ·  中国 广东 广州 中移铁通
中级用户
★★
积分 256
发帖 93
注册 2006-03-26 22:12
20年会员
UID 52853
性别 男
来自 广东
状态 离线
去掉 call 的效果也是一样.

call 有时的作用是很大的.

@echo off
set a=1
echo %a%
call :aa a
echo %a%
goto :EOF

:aa
call set %1=2
goto :EOF
18 发表于 2007-01-29 15:01 ·  中国 江西 南昌 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
第一句call是本职工作

第二句call是蛇足之笔

set %1=2



call set %1=2

结果没有什么不同

在下面的例子中call是有用的


@echo off
set a=1 2 3
echo %a%
call :aa a
echo %a%
goto :EOF

:aa
call set %1=%%%1%% 4 5 6
goto :EOF


[ Last edited by qzwqzw on 2007-1-29 at 02:03 AM ]
19 发表于 2007-01-29 15:18 ·  中国 山东 济南 电信
初级用户
积分 125
发帖 44
注册 2007-01-24 15:31
19年会员
UID 77555
性别 女
状态 离线
请问 qzwqzw :

1.---------------------------
call set %1=%%%1%% 4 5 6

在代码没有测试运行前,如何判断该使用几次%符号.

2.---------------------------
call set %1=%%%1%% 4 5 6 等效于 set %1=%a% 4 5 6

call set是否有必要性.

[ Last edited by qjbm on 2007-1-29 at 02:23 AM ]
20 发表于 2007-01-29 15:19 ·  中国 广东 广州 花都区 电信
初级用户
★★
积分 197
发帖 77
注册 2006-09-19 14:02
19年会员
UID 63074
性别 男
状态 离线
强~~~~~~~够牛的虽然没看懂....汗~~
21 发表于 2007-01-29 15:22 ·  中国 广东 广州 中移铁通
中级用户
★★
积分 256
发帖 93
注册 2006-03-26 22:12
20年会员
UID 52853
性别 男
来自 广东
状态 离线
加多一对 %%

call set %1=%%%1%% 4 5 6

call set a=%%a%% 4 5 6
  ↓
set a=%a% 4 5 6
22 发表于 2007-01-29 15:51 ·  美国 弗吉尼亚州 梅克伦堡县 博伊顿 Microsoft
高级用户
★★
积分 783
发帖 268
注册 2006-12-26 17:18
19年会员
UID 74627
性别 男
状态 离线
@echo off
set a=1 2 3
echo %a%
call :aa a
echo %a%
goto :EOF

:aa
call set %1=%%%1%% 4 5 6
goto :EOF


领悟不错的话 call的作用在一定程度上是代替的变量延迟

@echo off
setlocal enabledelayedexpansion
set a=1 2 3
echo %a%
call :aa a
echo %a%
pause
goto :EOF

:aa
set %1=!%1! 4 5 6
goto :EOF
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
23 发表于 2007-01-30 00:41 ·  中国 山西 运城 联通
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
---qjbm-----------

Q1:总的原则是需要解析几次就用几层%

比如call set %1=%%%1%% 4 5 6

在call执行之前命令行已被处理成了类似这样的形式

call set a=%a% 4 5 6

在call执行之后set执行之前命令行则变成这样

set a=1 2 3 4 5 6

Q2:当aa段内使用的是不确定的或者动态变化的变量名时call set是有用的

---PPdos----------------------------------

领悟得不错

不过反过来理解更合适些——

变量延迟l的作用在一定程度上是代替的call

因为call的用法出现要早得多

在没有cmd的时候

dos下就是用call来实现类似C语言的传址特性的
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
NWQ +1 2007-01-30 00:47
qjbm +1 2007-01-30 03:38
24 发表于 2007-01-30 05:22 ·  中国 湖北 武汉 蔡甸区 电信
初级用户
积分 36
发帖 18
注册 2007-01-30 02:39
19年会员
UID 78074
性别 男
状态 离线
厉害,收藏慢慢学~~~~~~
25 发表于 2007-01-30 12:06 ·  中国 北京 朝阳区 联通
高级用户
★★
朦胧的世界
积分 579
发帖 218
注册 2006-10-24 04:29
19年会员
UID 67972
状态 离线
创意很不错.就是不必要的语句有点多.简化一下.


@echo off & setlocal EnableDelayedExpansion
mode con cols=100 lines=40
title COLOR TIME
call :tnb
set spc=
set font=█★●◆□◎◇¤⊙〓

:new
setlocal
color e%RANDOM:~-1%
set rdfont=!font:~%RANDOM:~-1%,1!
set/a a=%random%%%50,b=%random%%%35
set nk=!spc:~0,%a%!
for /l %%a in (0,1,%b%) do echo.
if "%time:~0,1%"==" " set time=0%time:~1%

echo %nk% %date%
echo %nk% !%time:~0,1%a:█=%rdfont%! !%time:~1,1%a:█=%rdfont%! !%time:~3,1%a:█=%rdfont%! !%time:~4,1%a:█=%rdfont%!
echo %nk% !%time:~0,1%b:█=%rdfont%! !%time:~1,1%b:█=%rdfont%! !%time:~3,1%b:█=%rdfont%! !%time:~4,1%b:█=%rdfont%!
echo %nk% !%time:~0,1%c:█=%rdfont%! !%time:~1,1%c:█=%rdfont%! · !%time:~3,1%c:█=%rdfont%! !%time:~4,1%c:█=%rdfont%!
echo %nk% !%time:~0,1%d:█=%rdfont%! !%time:~1,1%d:█=%rdfont%! !%time:~3,1%d:█=%rdfont%! !%time:~4,1%d:█=%rdfont%!
echo %nk% !%time:~0,1%e:█=%rdfont%! !%time:~1,1%e:█=%rdfont%! · !%time:~3,1%e:█=%rdfont%! !%time:~4,1%e:█=%rdfont%!
echo %nk% www.cn-dos.net DOSCC WINBY.
ping 127.1 -n 3 >NUL
cls
endlocal
goto :new

:tnb
rem 0-9 数字模样。
set 0a=█████
set 0b=█ █
set 0c=█ █
set 0d=█ █
set 0e=█████

set 1a= ██
set 1b= █
set 1c= █
set 1d= █
set 1e= █

set 2a= ███
set 2b= █
set 2c=█████
set 2d=█
set 2e=█████

set 3a= ███
set 3b= █
set 3c=█████
set 3d= █
set 3e=█████

set 4a=█
set 4b=█ █
set 4c=█████
set 4d= █
set 4e= █

set 5a=███
set 5b=█
set 5c=█████
set 5d= █
set 5e=█████

set 6a=███
set 6b=█
set 6c=█████
set 6d=█ █
set 6e=█████

set 7a=█████
set 7b=█ █
set 7c= █
set 7d= █
set 7e= █

set 8a=█████
set 8b=█ █
set 8c=█████
set 8d=█ █
set 8e=█████

set 9a=█████
set 9b=█ █
set 9c=█████
set 9d= █
set 9e= ████
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
electronixtar +8 2007-01-30 14:05

认识自己,降伏自己,改变自己
,才能改变别人!
26 发表于 2007-01-30 12:50 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
太佩服你们了

哈哈。。。。
27 发表于 2007-01-30 12:51 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
很久没有来法帖子了

今天看到了很多好的东西了

正在狂学中啊

*_*
28 发表于 2007-01-31 00:22 ·  中国 湖南 联通数据上网公共出口
社区乞丐
★★
gaoshou
积分 -16
发帖 77
注册 2007-01-30 09:11
19年会员
UID 78105
性别 男
状态 离线
大力支持
:cool:
29 发表于 2007-01-31 11:00 ·  中国 湖南 衡阳 电信
中级用户
★★
积分 322
发帖 144
注册 2007-01-10 13:00
19年会员
UID 76062
性别 男
状态 离线
数字写得不太好看啊`
30 发表于 2007-02-01 00:53 ·  中国 湖南 长沙 联通
社区乞丐
★★
gaoshou
积分 -16
发帖 77
注册 2007-01-30 09:11
19年会员
UID 78105
性别 男
状态 离线
顶.............
不过我总觉得缺点什么
:cool:
论坛跳转: