标题: [文本处理] 批处理如何逐字显示,但是排版要看起来和原来一样? [打印本页]
作者: bat爱好者 时间: 2013-1-5 18:54 标题: 批处理如何逐字显示,但是排版要看起来和原来一样?
- @echo off
- color 0a
- setlocal enabledelayedexpansion
- echo 需要把文档放在和这个程序同一个目录下
- set /p n=请输入文档名称:
- for /f %%i in (%n%.txt) do (
- set e=%%i
- for /l %%a in (0,1,10000) do (
- if "!e:~%%a,1!" neq "" (
- set /p c=!e:~%%a,1!<nul
- rem 下面的命令是控制播放速度的,例如500,就相当于在多看之间加了500个空的输出。这电脑运行是要时间的。
- for /l %%b in (1,1,500) do echo>nul
- )
- )
-
- )
- pause>nul
复制代码
逐字显示我已经能实现
就差显示文档里面的格式了,比如段落,空格......这样看起来比较好
作者: batman 时间: 2013-1-5 19:52
请将要阅读的文本拖放到批上:- @echo off
- if "%~1" equ "" exit
- for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%~1"') do (
- set "str=%%b"
- setlocal enabledelayedexpansion
- if defined str (
- call :lp
- ) else (
- echo,
- )
- for /l %%a in (1,1,1000) do echo,>nul
- endlocal
- )
- pause>nul&exit
- :lp
- set /p= !str:~,1!<nul
- set "str=!str:~1!"
- for /l %%a in (1,1,500) do echo,>nul
- if defined str goto lp
- echo,
复制代码
作者: bat爱好者 时间: 2013-1-5 20:02
回复 2# batman
怎么会一闪过就没了,可以给完整的代码我看看嘛?
作者: batman 时间: 2013-1-5 20:13
请将要阅读的文本拖放到批上:
batman 发表于 2013-1-5 19:52
楼主难道看不到第一行的文字?
作者: terse 时间: 2013-1-6 00:23
本帖最后由 terse 于 2013-1-6 16:10 编辑
版主遗漏行首冒号问题
不CALL它
先不用了复制代码
作者: bat爱好者 时间: 2013-1-6 14:58
回复 5# terse
用你和版主的都实现不了我要的效果,我在这再说一次我的目的:我要的是在批处理弹出的窗口中,把我要读的文章内容一个个字的显示,但是显示文章效果的版面要和我放在文档里面的一样,就是该有空格的有空格,哪里分段的还是显示分段。这种效果能做出来吗?能的请附上完整的代码,谢谢。
作者: terse 时间: 2013-1-6 16:09
承认我的理解错误 暂把代码删了 以免误导
但你说的一个个字显示是怎么显示 难道上面代码是一屏一屏显示吗
作者: bat爱好者 时间: 2013-1-6 16:13
回复 7# terse
我的代码已经可以实现一个个字显示文章内容了,就差要实现我最想要的效果了
作者: batman 时间: 2013-1-6 19:27
确实理解不了你要的效果,我的代码能原样逐字逐行输出文档原版面内容,难道还不是你要的?
作者: ht河豚 时间: 2013-1-6 22:21
额,batman的代码肿么这样
作者: ht河豚 时间: 2013-1-6 22:23
其他却OK?
作者: terse 时间: 2013-1-6 23:29
额,batman的代码肿么这样测试txt:
ht河豚 发表于 2013-1-6 22:21
编码问题
作者: terse 时间: 2013-1-6 23:50
本帖最后由 terse 于 2013-1-6 23:53 编辑
处理下编码问题
请将要阅读的文本拖放到P 和先前代码一样 效果可能不是楼主要的
默认显示代码本身
如要输入功能 去掉第三行行首::- @echo off
- if "%~1" equ "" (set "F=%~s0") else set "F=%~1"
- ::set /p F=请输入文档名称:
- for /f "delims=" %%a in ('cmd /a /c type "%F%"^|findstr /n .*') do (
- set "s=%%a"
- setlocal enabledelayedexpansion
- set "s=:!s:*:=!"
- set Ln=0&set "Sn=!s!"
- 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!"
- for /l %%i in (1 1 !Ln!) do (
- set /p= !s:~%%i,1!<nul
- for /l %%a in (1,1,500) do ver>nul
- )
- echo;&endlocal
- )
- pause
复制代码
作者: BAT-VBS 时间: 2013-1-7 10:20
回复 10# ht河豚
因为这个文件是unicode编码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |