在论坛混了这么久,第一次在原创板块发帖,而且代码跟高手们的比起来还真是汗颜,可真是进步缓慢啊。来批处理之家前只是在百度上对一些简单命令有一点点了解,刚进来什么都不懂。在这里我要感谢batman,可以说是他引我入门的,他跟我一样不是学计算机的,但是我很佩服他的技术。那时候天天缠着他问问题,耽误了他不少时间。
之前也写过一些自认为实用性的东西,但是总感觉写的太差劲,不敢贴出来,有时工作忙也没心思去弄。贴这个代码出来主要希望大家指点几个问题:
1.for /f处,我是call调用:loop对每行进行处理,但是这样会发现文章很长时到后面速度会变慢很多。开始我把loop段嵌套到for里面通过goto跳转,但是for处理完一行就会跳出循环。不知道有什么好的解决办法不?
测试代码:-
- @echo off
- for /f "%_skip% delims=" %%i in ('findstr /n ".*" 1.txt') do (
- set "var=%%i"&set/a line+=1
- setlocal enabledelayedexpansion
- title 第!line!段(右击暂停,CTRL+C停止)
- set "var=!var:*:=!"
- :loop
- set/a n+=1&set "str1=!str!"
- call,set "str=%%var:~0,!n!%%"
- if "!str!" equ "!str1!" goto next
- set/p=!str!<nul
- if !n! equ 25 set/a n=0&set "var=!var:~25!"&echo\&echo\
- if not defined var goto next
- for /l %%a in (1,1,50) do set/p=<nul
- for /l %%b in (1,1,100) do ver>nul
- goto loop
- :next
- echo\&echo\&endlocal
- )
- pause
复制代码 2.还存在部分特殊字符的组合不能正确显示
3.我想产生一个ini配置文件,规定一个格式来将文件添加到列表,记录历史记录(阅读到的行数、速度、位置等信息),方案想到了,但是会对配置文件反复进行写入操作(每行一次),不知会不会硬盘损耗厉害。
下面是我的代码:-
- @echo off
- title 文本阅读器(右击暂停,CTRL+C停止)
- color 1f&mode con cols=50 lines=30
- echo.&echo.&echo.&echo.
- set/p file= 请把要阅读的文本拖入窗口:
- echo.&set/p m= 开始阅读位置*段(直接回车默认从头开始):
- if defined m (set/a m-=1&call,set "_skip=skip=%%m%%")
- echo.&set/p speed= 速度(直接回车默认速度为100;数值越小速度越快):
- if not defined speed set speed=100
- cls&set "line=%m%"
- for /f "%_skip% delims=" %%i in ('findstr /n ".*" %file%') do (
- set "var=%%i"&set/a line+=1
- setlocal enabledelayedexpansion
- title 第!line!段(右击暂停,CTRL+C停止)
- set "var=!var:*:=!"
- if defined var call :loop
- echo\&echo\&endlocal
- )
- echo\&echo 本文完!!!
- ping /n 3 127.1 >nul
- exit
- :loop
- set/a n+=1&set "str1=!str!"
- call,set "str=%%var:~0,!n!%%"
- if "!str!" equ "!str1!" goto :eof
- set/p=!str!<nul
- if !n! equ 25 set/a n=0&set "var=!var:~25!"&echo\&echo\
- if not defined var goto :eof
- for /l %%a in (1,1,50) do set/p=<nul
- for /l %%b in (1,1,%speed%) do ver>nul
- goto loop
复制代码
|