标题: [特效代码] 批处理逐行逐字显示 [打印本页]
作者: xxx3212 时间: 2007-12-22 23:13 标题: 批处理逐行逐字显示
1.txt 里面是一编小说
怎么让它逐行逐字显示
显示满屏后暂停
作者: novaa 时间: 2007-12-23 10:36
要考虑到空行。行里面得空格。特殊得字符。
好好想想
作者: 随风 时间: 2007-12-24 00:43
来一个,显示20行后暂停,如果单行字符超过80个,就会多显示一行,因为cmd默认是每行80个字符.
可以处理大部分的特殊字符.及空行.
:- @echo off
- for /f "tokens=1* delims=:" %%a in ('findstr /n .* 1.txt') do (
- set "var=%%b"&set /a num+=1
- if "%%b"=="" (echo\) else (
- setlocal enabledelayedexpansion
- call :lis&echo\
- endlocal
- )
- set /a saz=1/^(20/num^)2>nul||(set num=0&echo\&pause&cls)
- )
- pause&exit
- :lis
- set /p= !var:~0,1!<nul
- set var=!var:~1!
- if "!var!"=="" goto :eof
- goto lis
复制代码
作者: xxx3212 时间: 2007-12-24 01:06
:lis
set /p= !var:~0,1!<nul
set var=!var:~1!
if "!var!"=="" goto :eof
goto lis
这句写的还可以
作者: xxx3212 时间: 2007-12-24 01:08
其实我也写了个 比你的还要好 , 代码在家里那个烂电脑上 没网线 有空用mp3传上来
作者: xxx3212 时间: 2007-12-24 01:10
set /p= !var:~0,1!<nul
好象可以改成
set /p=!var:~0,1!<nul
为什么非要在前面加个空格然后删除呢?
作者: xxx3212 时间: 2007-12-24 01:13
如果字符里有个 "引号" 就显示不出来了 !
作者: xxx3212 时间: 2007-12-24 01:20
我把你的稍微缩写了下
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (1.txt) do (
set/a num+=1
set "str=%%a"
set/p=!str:~0,1!<nul
set "str=!str:~1!"
if "!var!"=="" echo.
if !num!==20 pause&cls
)
pause>nul
作者: xxx3212 时间: 2007-12-24 01:23
顺便写个我刚刚缩写的九九乘法表
@echo off
setlocal enabledelayedexpansion
for /l %%a in (1,1,9) do (
for /l %%b in (1,1,%%a) do (
set /a var=%%a * %%b
set/p=%%a×%%b=!var! <nul
if %%a==%%b echo.
)
)
pause>nul
作者: 随风 时间: 2007-12-24 01:24
原帖由 xxx3212 于 2007-12-24 01:13 发表
如果字符里有个 "引号" 就显示不出来了 !
你测试了么?
作者: novaa 时间: 2007-12-24 10:24
8楼得不行吧。会忽略空行。发代码前可否花点时间测试下?在说一看"delims=”也应该知道得啊。
而且后面得!VAR!?
还有如果空格。table键呢。
作者: xxx3212 时间: 2007-12-24 23:20
如果里面有
!@#$%^&*()
所有的特殊字符你能显示正常吗?
作者: 随风 时间: 2007-12-24 23:22
原帖由 xxx3212 于 2007-12-24 23:20 发表
如果里面有
!@#$%^&*()
所有的特殊字符你能显示正常吗?
建议先测试再提问,如果测试能够解决的问题,还有必要提问么?
光问,不想,不测试... 你永远也学不会.
作者: fq12003 时间: 2008-1-1 14:04
@echo off
for /f "delims= eol=" %%a in (1.txt) do (
set a=%%a
setlocal enabledelayedexpansion
call :start
endlocal
)
pause
:start
for /l %%b in (1,1,100) do ver>nul
if "!a!"=="" echo.&goto :eof
set/p= !a:~%b%,1!<nul
set a=!a:~1!
goto :start
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |