Board logo

标题: [特效代码] 批处理特效之多行回退擦除小动画 [打印本页]

作者: batman    时间: 2013-8-22 19:33     标题: 批处理特效之多行回退擦除小动画

本帖最后由 batman 于 2013-8-22 19:45 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. mode con cols=45 lines=8&title 大侠@之三招制敌
  3. rem 因论坛处理不了制表符,请将下面tab=后面的空格替换为制表符后运行,切记。。。
  4. set "tab= "
  5. for /l %%a in (1,1,44) do set "tg=!tg!"&set "k=!k! "
  6. for /f "delims=:" %%a in ('findstr /n "^exit" "%~0"') do set /a n=%%a
  7. for /f "skip=%n% tokens=1,2 delims=:" %%a in ('findstr /n .* "%~0"') do (
  8.   if "!m!" equ "6" (
  9.     for /l %%c in (1,1,5000) do echo,>nul
  10.     for /l %%c in (1,1,6) do (
  11.       2>nul echo,%tab%%tg:~,12%
  12.       set /p=%k%%tg%<nul
  13.     )
  14.     set /a m=0
  15.   )
  16.   echo,%%b&set /a m+=1
  17. )
  18. pause>nul
  19. exit
  20. @:怎么着?        #:想和你见个高下!
  21.         @       #   
  22.        <|~     \|>  
  23.         >\     < \  
  24. @:三招叫你趴下!        #:我好怕怕。。。
  25.          @     #
  26.         ~)-   ~ )^
  27.         />     <|
  28. #:看打,哈!        @:找死! 
  29.            @ #
  30.          </- ~\^
  31.          />   <\
  32. #:黑虎掏心!        @:呀。。。
  33.          @/ #
  34.          {\~ \>
  35.           |\ <\
  36. @:泰山压顶!        #:啊!
  37.          @ #
  38.         ~(\~)^
  39.          />/|
  40. @:潜龙出海!        #:啊!
  41.            @_#
  42.           /\~)^
  43.          /| <L
  44. @:佛山无影腿!        #:操!
  45.            @  \#
  46.           ~(/~/
  47.            > <\
  48. #:操!!
  49.            @     \#
  50.           ~(-   ~/
  51.            >\   <L
  52. #:操!!!
  53.            @        
  54.           ~|-    ~_#
  55.            |\     /L \
  56. #:可恶...
  57.            @       #
  58.           ~|-    ~/\
  59.            |\    /L
  60. @:还来?        #:老大,别打了!
  61.           \@
  62.            |~  \#__
  63.            >\   | /L
  64. #:老大,我错了...        @:哈哈!
  65.            @
  66.           <|> #__
  67.            |\ /|<\
复制代码

作者: miracle0    时间: 2013-8-22 21:45

没看懂,可否提示一下?
作者: dos-a    时间: 2023-4-3 14:07

回复 1# batman

大佬我换了制表符也不行啊win10,回退不了,他是直接向上逐行打印的
作者: dos-a    时间: 2023-4-5 15:54

回复 1# batman


    大佬麻烦有空回下
作者: HOPE2021    时间: 2023-4-5 17:25

回复 4# dos-a
Win 10 无法使用制表符多行回退,但是可以通过 VT 100 转义来实现相关功能,详见:
https://learn.microsoft.com/zh-cn/windows/console/console-virtual-terminal-sequences
作者: dos-a    时间: 2023-4-6 00:03

回复 5# HOPE2021


    ai给的代码但是还是就没用啊
@echo off
setlocal EnableDelayedExpansion

rem 设置 VT100 控制码
set "ESC=["
set "CSI=%ESC%%ESC%["
set "CUU=%CSI%A"
set "CUD=%CSI%B"

rem 输出三行文本
echo Line 1
echo Line 2
echo Line 3

rem 回退两行并输出新文本
echo %CUU%%CUU%New line 1
echo New line 2

endlocal
作者: HOPE2021    时间: 2023-4-8 22:02

回复 6# dos-a
……
ESC字符是不可显示字符(虽然在 Windows 系统下可见),并非方括号,ESC 字符的获取以及简单的应用可以见我的帖子:http://www.bathome.net/viewthread.php?tid=63749

一般来说,对于 ESC 字符的获取可以使用:
  1. :InitVT100
  2. %= { =%
  3. %= 获取 ESC 字符 =%
  4. Set "ESC="
  5. %= 如果没有定义 ESC 字符,这个过程是为了防止论坛误吞上文的 ESC 字符 =%
  6. If Not Defined ESC (
  7. For /F "Delims=#" %%_ in ('Prompt #$E# ^& Echo On ^& For %%$ in ^(1^) Do DosKey') Do Set "ESC=%%_"
  8. )
  9. %= } =%
  10. @Goto :Eof
复制代码
所以 AI 的代码可以改成:
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. rem 设置 VT100 控制码
  4. call :GetESC
  5. set "CSI=%ESC%["
  6. set "CUU=%CSI%A"
  7. set "CUD=%CSI%B"
  8. rem 输出三行文本
  9. echo;Line 1
  10. echo;Line 2
  11. echo;Line 3
  12. rem 回退两行并输出新文本
  13. echo;%CUU%%CUU%New line 1
  14. echo;New line 2
  15. endlocal
  16. pause
  17. :GetESC
  18. set "ESC="
  19. if not defined ESC (
  20.     for /f "delims=#" %%_ in ('prompt #$E# ^& echo on ^& for %%$ in ^(1^) do dosKey') do Set "ESC=%%_"
  21. )
  22. @goto :eof
复制代码

作者: dos-a    时间: 2023-4-9 11:40

回复 7# HOPE2021


    大佬牛批




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2