Board logo

标题: [讨论]批处理排版输出 [打印本页]

作者: 随风    时间: 2008-5-14 04:31     标题: [讨论]批处理排版输出

排版输出
写了个没什么用的东西,对单双字节排版输出。
将文档以"指定字符"为分割符,排版输出。
效率不是很高,并且创建了两个临时文件。

:
  1. @echo off&setlocal enabledelayedexpansion
  2. cd.>tmp.txt&cd.>tmp1.txt
  3. ::变量 f 为指定字符
  4. set "f= "
  5. for /f "delims=" %%a in (a.txt) do (
  6.    call :loop "%%a"
  7.    (echo.>>tmp.txt)
  8. )
  9. for /l %%l in (1 1 20) do set /a _%%l=0
  10. set "var=^(type tmp.txt^&echo.^)^|findstr /o .*"
  11. for /f "tokens=1* delims=:" %%a in ('%var%') do (
  12.    if defined n (
  13.       set /a m=%%a-2-n,flag+=1
  14.       call set "lis=%%_!flag!%%"
  15.       if !m! neq 0 (
  16.           (>>tmp1.txt echo !m!:!name!.)
  17.           if !m! geq !lis! set "_!flag!=!m!"
  18.         ) else (
  19.           (echo.#>>tmp1.txt)
  20.           set /a flag=0
  21.     ))
  22.    set /a n=%%a&set "name=%%b"
  23. )
  24. set name=&set /a m=0
  25. for /f "tokens=1* delims=:" %%a in (tmp1.txt) do (
  26.    set flag=&set /a m+=1
  27.    call set "n=%%_!m!%%"
  28.    set /a n=n-%%a
  29.    for /l %%i in (1 1 !n!) do set "flag= !flag!"
  30.    set "n=%%b"
  31.    set "n=!n:~0,-1!!flag!"
  32.    if not "%%a"=="#" (set "name=!name! %f% !n!") else (
  33.       (echo !name:~3!)
  34.       set name=&set /a m=0
  35. )   )
  36. del/q tmp.txt tmp1.txt
  37. echo.&pause&exit
  38. :loop
  39. for /f "tokens=1* delims=%f%" %%i in ("%~1") do (
  40.    (>>tmp.txt echo %%i)
  41.    if not "%%j"=="" call :loop "%%j"
  42. )
  43. goto :eof
复制代码

[ 本帖最后由 随风 于 2008-5-14 09:53 编辑 ]
作者: fml520    时间: 2008-5-19 10:27

哇!要这么长的饿代码吗??
作者: 随风    时间: 2008-5-19 12:13     标题: 回复 2楼 的帖子

呵呵,
以空格为分隔符每行的段数不确定,且每段中都是中英文混合,fml520 兄若有简洁的代码,还请贴出来大家共享一下。  盼 !!
作者: 523066680    时间: 2008-8-14 10:24

——————————永远大话西游!————————




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2