中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 01:07
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]********绘制矩形******** 查看 880 回复 2
楼 主 [原创]********绘制矩形******** 发表于 2007-10-12 17:05 ·  中国 北京 网联光通
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
@echo off
::::::::绘制矩形 {s11ss 2007-10-12}::::::::
setlocal enabledelayedexpansion
if "%1" equ "/?" (
call :help
echo 例如:%0 * 8 500
goto :eof
)

::设置变量:
if "%1" equ "" (
call :help
echo 现在就输入参数,如* 8 500:
set/p s=
for /f "tokens=1,2* delims= " %%a in ("!s!") do (
set c=%%a
set n=%%b
set w=%%c
)
) else (
set c=%1
set n=%2
set w=%3
)
set/a r=%n%-2
for /l %%a in (1,1,%n%) do (
set up=!up!%c%
for /l %%i in (1,1,%%a) do set down%%a=!down%%a!%c%
set/a t=%n%-%%a
::pause
for /l %%z in (1,1,!t!) do set down%%a= !down%%a!
if %%a leq %r% set space%r%= !space%r%!
)
set mid1=!space%r%! %c%
set mid2=%c%!space%r%!%c%

::分四步绘制:
::1.上边的棱
for /l %%a in (1,1,%n%) do (
cls
echo !up:~0,%%a!
call :delay
)
::2.右边的棱
>t.x echo !up!
for /l %%a in (1,1,%n%) do (
if %%a leq %r% (
echo !mid1!
>>t.x echo !mid1!
call :delay
)
)
::3.下边的棱
for /l %%a in (1,1,%n%) do (
cls
type t.x
echo !down%%a!
call :delay
)
::4.左边的棱
for /l %%a in (1,1,%n%) do (
if %%a leq %r% (
cls
echo !up!
set/a t=%r%-%%a
for /l %%i in (1,1,!t!) do (
echo !mid1!
)
for /l %%z in (1,1,%%a) do (
echo !mid2!
)
echo !up!
call :delay
)
)

::结束:
del t.x
pause>nul
goto :eof

::函数部分:
:delay
for /l %%x in (1,1,%w%) do (echo Waiting...>nul)
goto :eof

:help
echo 参数一:用于显示的字符,如*。
echo 参数二:一行字符的个数,如8。
echo 参数三:字符之间的延时,如500。
2 发表于 2007-10-12 21:16 ·  中国 广东 广州 白云区 电信
初级用户
★★
积分 132
发帖 59
注册 2007-08-23 21:24
18年会员
UID 95705
性别 男
来自 GuangZhou
状态 离线
发觉除了*号之外
其它符号就会出错
如何解释啊 LZ?
3 发表于 2007-10-12 22:19 ·  中国 北京 鹏博士BGP
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
比如?
论坛跳转: