[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
我还是喜欢用纯批处理,代码先不发了,先看看别人的吧。。。
***共同提高***

TOP

思路说明:
以下代码是充分findstr命令的示例,使用findstr /n来取得行号同时兼容空行,
并将行号进行变量赋值;使用findstr /o来取得第行的字符偏移量,但要通过
上、下行的字符偏移差,因为字符偏移值是类计递加的,同时每行回车增加
两个字符偏移,所以不可避免要对最后一行强加回车,在不破坏原文件的情
况下只好生成临时文件;利用findstr /o能够一次性获得文本所有行的字符偏
移量也就是字符总数,效率和逐字符判断相比肯定是高得多了。
---------------------------------
  1. @echo off
  2. copy /y 1.txt 2.txt>nul
  3. echo.>>2.txt&echo end>>2.txt
  4. for /f "tokens=1,2* delims=: " %%i in ('findstr /n /o .* 2.txt') do (
  5.     set "_%%i=%%j"&set ".%%i=%%k"
  6.   if %%i geq 2 call :lp %%i
  7. )
  8. del /q 2.txt&pause>nul&goto :eof
  9. :lp
  10. set /a n=%1-1
  11. set /a num=_%1-_%n%-2
  12. set /a kl=(80-num)/2
  13. for /l %%i in (1,1,%kl%) do set /p= <NUL
  14. call,set /p=%%.%n%%%<NUL&ECHO.
复制代码
2

评分人数

***共同提高***

TOP

再来一个更简单的(no findstr  no 逐字符 no tempfile no 变量延迟):
  1. @echo off
  2. for /l %%i in (1,1,80) do call,set "kong=%%kong%% "
  3. for /f "delims=" %%i in (1.txt) do (
  4.      set "str=%%i%kong%"
  5.      call,set "str=%%str:~,80%%"
  6.      call,set "str=%%str:%%i=%%"
  7.      call,set "str=%%str:  = %%"
  8.      call,echo %%str%%%%i
  9. )
  10. pause>nul
复制代码

[ 本帖最后由 batman 于 2008-8-2 12:04 编辑 ]
2

评分人数

    • biluncloud: 个人觉得最妙的方法莫过此!!整体与人体的 ...技术 + 1
    • keen: 思路好!!!PB + 6
***共同提高***

TOP

楼上的没考虑空行,同时逐字符效率是大问题,还有最后的goto :eof是多余的。
***共同提高***

TOP

返回列表