本帖最后由 zm900612 于 2011-5-9 12:55 编辑
不是很擅长特效,也没怎么思考过其中的技巧,所以写得比较复杂- @echo off
- set /a 耗时=10,宽=40
- set /p call=1、scroll 2、alternate 3、slide(Current) ^
-
- Your Choice:[.]
- if "%call%"=="1" call:marquee "scrollamount=%耗时% width=%宽% behavior=scroll" "bbs.bathome.net"
- if "%call%"=="2" call:marquee "scrollamount=%耗时% width=%宽% behavior=alternate" "bbs.bathome.net"
- call:marquee "scrollamount=%耗时% width=%宽% behavior=slide" "bbs.bathome.net"
-
- :marquee
- setlocal enabledelayedexpansion
- title %*
- for /f "skip=4 tokens=2" %%a in ('mode con') do if not defined cols set cols=%%a
- for /f "tokens=1-3" %%a in (%1) do set %%c&set /a %%a,%%b
- if %behavior%==slide set sl=::
- set "$=%~2#"
- set len=&for %%a in (128 64 32 16 8 4 2 1)do if !$:~%%a^,1!. NEQ . set/a len+=%%a&set $=!$:~%%a!
- set th=【此处替换为制表符tab】
- for /l %%a in (0 %cols% %width%) do echo;&set th=!th!
- set "sr=%~2"
- for /l %%a in (1 1 %width%) do set "sr= !sr!"
- set k=!sr:~0,%width%!&set xh=!sr:~-%width%!
- (if not %behavior%==alternate for /l %%a in (1 1 %len%) do (
- echo !th! !k:~0,-%%a!!xh:~-%len%,%%a!
- for /l %%b in (-%scrollamount%00 5) do cd.
- )) 2>nul
- if %behavior% neq scroll set /a "width-=len"
- %sl% (set /a width-=1
- %sl% for /l %%a in (1 %behavior:slide=%1 1) do (
- for /l %%b in (1 1 %width%) do (
- echo !th! !xh:~%%b!!xh:~0,%%b!
- for /l %%b in (-%scrollamount%00 5) do cd.
- )
- %sl% if !behavior! neq scroll for /l %%b in (!width! -1) do (
- %sl% echo !th! !xh:~%%b!!xh:~0,%%b!
- %sl% for /l %%b in (-%scrollamount%00 5) do cd.)
- %sl%)) 2>nul
- endlocal
- pause>nul
复制代码 修改了下,代码更飘逸,思路更严谨 |