[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[特效代码] 批处理逐行逐字显示

1.txt 里面是一编小说
怎么让它逐行逐字显示
显示满屏后暂停

要考虑到空行。行里面得空格。特殊得字符。
好好想想
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

来一个,显示20行后暂停,如果单行字符超过80个,就会多显示一行,因为cmd默认是每行80个字符.
可以处理大部分的特殊字符.及空行.

:
  1. @echo off
  2. for /f "tokens=1* delims=:" %%a in ('findstr /n .* 1.txt') do (
  3.    set "var=%%b"&set /a num+=1
  4.    if "%%b"=="" (echo\) else (
  5.      setlocal enabledelayedexpansion
  6.      call :lis&echo\
  7.      endlocal
  8.    )
  9.    set /a saz=1/^(20/num^)2>nul||(set num=0&echo\&pause&cls)
  10. )
  11. pause&exit
  12. :lis
  13.   set /p= !var:~0,1!<nul
  14.   set var=!var:~1!
  15.   if "!var!"=="" goto :eof
  16. goto lis
复制代码
技术问题请到论坛发帖求助!

TOP

:lis
  set /p= !var:~0,1!<nul
  set var=!var:~1!
  if "!var!"=="" goto :eof
goto lis
这句写的还可以

TOP

其实我也写了个 比你的还要好 , 代码在家里那个烂电脑上 没网线 有空用mp3传上来

TOP

set /p= !var:~0,1!<nul
好象可以改成
set /p=!var:~0,1!<nul
为什么非要在前面加个空格然后删除呢?

TOP

如果字符里有个 "引号" 就显示不出来了 !

TOP

我把你的稍微缩写了下
@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

TOP

顺便写个我刚刚缩写的九九乘法表
@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
1

评分人数

TOP

原帖由 xxx3212 于 2007-12-24 01:13 发表
如果字符里有个 "引号" 就显示不出来了 !


你测试了么?
技术问题请到论坛发帖求助!

TOP

8楼得不行吧。会忽略空行。发代码前可否花点时间测试下?在说一看"delims=”也应该知道得啊。
而且后面得!VAR!?
还有如果空格。table键呢。
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

如果里面有
!@#$%^&*()
所有的特殊字符你能显示正常吗?

TOP

原帖由 xxx3212 于 2007-12-24 23:20 发表
如果里面有
!@#$%^&*()
所有的特殊字符你能显示正常吗?


建议先测试再提问,如果测试能够解决的问题,还有必要提问么?
光问,不想,不测试...   你永远也学不会.
技术问题请到论坛发帖求助!

TOP

@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

TOP

返回列表