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

[文本处理] 批处理如何逐字显示,但是排版要看起来和原来一样?

  1. @echo off
  2. color 0a
  3. setlocal enabledelayedexpansion
  4. echo 需要把文档放在和这个程序同一个目录下
  5. set /p n=请输入文档名称:
  6. for /f %%i in (%n%.txt) do (
  7.   set e=%%i
  8.   for /l %%a in (0,1,10000) do (
  9.     if "!e:~%%a,1!" neq "" (
  10.        set /p c=!e:~%%a,1!<nul
  11.        rem 下面的命令是控制播放速度的,例如500,就相当于在多看之间加了500个空的输出。这电脑运行是要时间的。
  12.        for /l %%b in (1,1,500) do echo>nul
  13.     )
  14.   )
  15. )
  16. pause>nul
复制代码
逐字显示我已经能实现
就差显示文档里面的格式了,比如段落,空格......这样看起来比较好

请将要阅读的文本拖放到批上:
  1. @echo off
  2. if "%~1" equ "" exit
  3. for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%~1"') do (
  4.   set "str=%%b"
  5.   setlocal enabledelayedexpansion
  6.   if defined str (
  7.     call :lp
  8.     ) else (
  9.     echo,
  10.   )
  11.   for /l %%a in (1,1,1000) do echo,>nul
  12.   endlocal
  13. )
  14. pause>nul&exit
  15. :lp
  16. set /p= !str:~,1!<nul
  17. set "str=!str:~1!"
  18. for /l %%a in (1,1,500) do echo,>nul
  19. if defined str goto lp
  20. echo,
复制代码
***共同提高***

TOP

回复 2# batman


    怎么会一闪过就没了,可以给完整的代码我看看嘛?

TOP

请将要阅读的文本拖放到批上:
batman 发表于 2013-1-5 19:52



    楼主难道看不到第一行的文字?
***共同提高***

TOP

本帖最后由 terse 于 2013-1-6 16:10 编辑

版主遗漏行首冒号问题

不CALL它
先不用了
  1. ......................
复制代码

TOP

回复 5# terse


    用你和版主的都实现不了我要的效果,我在这再说一次我的目的:我要的是在批处理弹出的窗口中,把我要读的文章内容一个个字的显示,但是显示文章效果的版面要和我放在文档里面的一样,就是该有空格的有空格,哪里分段的还是显示分段。这种效果能做出来吗?能的请附上完整的代码,谢谢。

TOP

承认我的理解错误 暂把代码删了 以免误导
但你说的一个个字显示是怎么显示 难道上面代码是一屏一屏显示吗

TOP

回复 7# terse


    我的代码已经可以实现一个个字显示文章内容了,就差要实现我最想要的效果了

TOP

确实理解不了你要的效果,我的代码能原样逐字逐行输出文档原版面内容,难道还不是你要的?
***共同提高***

TOP

额,batman的代码肿么这样

TOP

其他却OK?

TOP

额,batman的代码肿么这样测试txt:
ht河豚 发表于 2013-1-6 22:21

编码问题

TOP

本帖最后由 terse 于 2013-1-6 23:53 编辑

处理下编码问题
请将要阅读的文本拖放到P 和先前代码一样  效果可能不是楼主要的
默认显示代码本身
如要输入功能 去掉第三行行首::
  1. @echo off
  2. if "%~1" equ "" (set "F=%~s0") else set "F=%~1"
  3. ::set /p F=请输入文档名称:                             
  4. for /f "delims=" %%a in ('cmd /a /c type "%F%"^|findstr /n .*') do (
  5.     set "s=%%a"
  6.     setlocal enabledelayedexpansion
  7.     set "s=:!s:*:=!"
  8.     set Ln=0&set "Sn=!s!"
  9.     for %%i in (1024 512 256 128 64 32 16 8 4 2 1)do if "!Sn:~%%i!" neq "" set/aLn+=%%i&set "Sn=!Sn:~%%i!"
  10.         for /l %%i in (1 1 !Ln!) do (
  11.             set /p= !s:~%%i,1!<nul
  12.             for /l %%a in (1,1,500) do ver>nul
  13.         )
  14.          echo;&endlocal
  15. )
  16. pause
复制代码

TOP

回复 10# ht河豚


    因为这个文件是unicode编码

TOP

返回列表