echo\&echo\&echo\&echo\&echo\&echo\&echo/
call:colstr e 15 "%s%" 0 1 0
call:colstr 0100 0 0 17 0 0
title 按任意键继续...&pause>nul
call:colstr a 1 "中国 DOS 联盟" 0 1 0
call:colstr c 0 "%s:~-15%" 0 1 9
pause>nul
call:colstr 2c 21 "谢谢测试! 有bug请吱一声" 0 1 9
title Jvive QQ∶275928264
pause>nul&exit/b
rem /*--------- colstr 函数 -------------
:Colstr <attr> <sp> <"str"> <bk> <sp> <enter>
for %%a in (+%2 +%4 +%5 +%6) do (
if "%%a"=="+" echo 控制参数不能为空&exit/b
if %%a lss +0 echo 参数越界-&exit/b
if %%a geq +a echo 参数越界+&exit/b)
if %3 == "" echo 字符串不能为空&exit/b
pushd %tmp%&setlocal ENABLEEXTENSIONS
if exist "%~3?" del/a/q "%~3?">nul 2>nul
if %2 gtr 0 call:%0_bs %2 sp " "&call set/p=%%sp%%<nul
if %4 gtr 0 (call:%0_bs %4 bk "") else set "bk="
call:%0_bs %5 sp " "
set/p=%bk%%sp%<nul>"%~3"&findstr /a:%1 .* "%~3?" 2>nul
if not %6 equ 0 for /l %%a in (1 1 %6)do echo.
endlocal&popd&goto:eof
:Colstr_bs
set "p="&for /l %%a in (1 1 %1)do call set "p=%%p%%%~3"
set "%2=%p%"&goto:eof
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
其中函数Colstr,我看不太懂,主要是这段for:
for %%a in (+%2 +%4 +%5 +%6) do (
if "%%a"=="+" echo 控制参数不能为空&exit/b
if %%a lss +0 echo 参数越界-&exit/b
if %%a geq +a echo 参数越界+&exit/b)
其中第一个if没问题,要求第2,4,5,6个参数不能为空。第二个if就无法理解了,lss +0的参数不知是什么参数,我把这4个参数设成负的,也不报越界-啊,至于第三个if,我的理解是这4个参数不能写成字母,不知道这样理解对不对。还有下面那个"%~3?"里面怎么是个?号,我昨晚看的是*号,*代表通配符,?号代表一个字符,用?号还是*号在这里有什么区别?
谢谢了!
谢谢版主,我去研究下这方面。另外能否帮我讲解一下最后3行
:Colstr_bs
set "p="&for /l %%a in (1 1 %1)do call set "p=%%p%%%~3"
set "%2=%p%"&goto:eof
其中do call set "p=%%p%%%~3"这个好像好复杂啊,do后面为啥加call,p=后面那一堆%%...是什么意思啊,这结构好乱啊作者: Batcher 时间: 2009-3-15 20:05