| @echo off&setlocal enabledelayedexpansion | | :: 灵感来源于cn-dos趣味东的多行回退 | | :: 趣味东发现用set /p输出一个tab+n个退格就将光标回退多行,但并不好控制 | | :: 于是本人就想到是不是能将光标回退到原点(屏幕左上角) | | :: 结果发现用echo输出一个tab+n个退格就能将光标退回到原点过一格的位置,但有错误信息输出 | | :: 于是,用2>nul屏蔽错误信息,并再加一个退格将光标退回原点 | | :: 下面通过代码进行简单演示,至于原因本人暂未搞明白 | | :: 因论坛处理不了tab,请将代码中的tab字符替换为实际的tab | | title 神奇的回退 | | set "t=tab" | | for /l %%a in (1,1,1000) do set "k=!k!" | | for /l %%a in (1,1,10) do echo ○○○○○○○○○○ | | ping /n 2 127.1>nul | | :: 这里将光标退回原点处,请仔细注意光标的位置 | | echo %t%%k% 2>nul&set /p=<nul | | pause>nul | | :: 请注意6-10行第6-10个字符的输出是没有改变的 | | for /l %%a in (1,1,5) do echo ●●●●●¤¤¤¤¤ | | for /l %%a in (1,1,5) do echo ⊙⊙⊙⊙⊙ | | pause>nulCOPY |
延伸:当我们实现了将光标退回原点后,那么就能随意控制光标退回到设定的位置了,再以代码示之: | @echo off&setlocal enabledelayedexpansion | | :: 请同样将tab字符换成tab | | title 光标回退7行 | | set "t=tab" | | for /l %%a in (1,1,1000) do set "k=!k!" | | for /l %%a in (1,1,20) do echo %%a%t%bathome | | ping /n 2 127.1>nul | | set /a n=20-7 | | echo %t%%k% 2>nul&set /p=<nul | | for /l %%a in (1,1,%n%) do echo. | | set /p=现在光标回退到这里了<nul | | pause>nulCOPY |
|