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

[文本处理] 批处理如何实现文本内容按列混排的效果?

以“。”、“!”、“?”为分介符来颠倒排列。

例:
1。2!3?4。5!6!7?8。9。

希望编排后的是:
2!1。4。3?5!6!8。7?
就是让1句与2句颠倒、3句与4句颠倒、当内容最后一句找不到颠倒的句子时,就删除最后一句。


123456789代表任意字符,但不句括“。”“?”“!”

有点难度吧???

效果已经实现,现在问个菜鸟级的问题,如何在多个文件里面批量实现上述功能,并且是修改该文件。
上面的批处理执行过后,只是在DOS里面显示出来,怎么能保存呢?如果是*.*是否可以批量修改*.*文件?

TOP

完善一下,上面代码未考虑到 1?2。 3!www 最后一位不是指定符号的情况。
  1. @echo off&cls
  2. for %%a in (。 、 ! ?) do set ..%%a=a
  3. for /f "delims=" %%i in (a.txt) do (
  4.    set "num=%%i"&set "str="%%i""
  5.    setlocal enabledelayedexpansion
  6.    set var=&set "var2="&set /a n=0,x=0
  7.    for %%a in (。 、 ! ?) do set "str=!str:%%a=%%a" "!"
  8.    if defined ..!num:~-1! set "str=!str:~0,-2!"
  9.    for %%a in (!str!) do (
  10.       set /a n+=1,m=n%%2
  11.       set .!n!=%%~a
  12.    )
  13.    if !m! neq 0 set /a n-=1
  14.    if !n! gtr 1 (
  15.       for /l %%a in (1 1 !n!) do (
  16.          set "var=!.%%a!!var!"
  17.          set /a x=x%%2+1
  18.          if !x! equ 2 set "var2=!var2!!var!"&set "var="
  19.       )
  20.       echo.!var2!
  21.    )
  22.    endlocal
  23. )
  24. pause
复制代码
技术问题请到论坛发帖求助!

TOP

1234567890是代表任意单个字符,还是多个字符的字符串都可以
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3.    set "str=%%i"
  4.    setlocal enabledelayedexpansion
  5.    set var=&set "var2="&set /a n=0,x=0
  6.    for %%a in (。 、 ! ?) do set "str=!str:%%a=%%a" "!"
  7.    set "str="!str:~0,-1!"
  8.    for %%a in (!str!) do (
  9.       set /a n+=1,m=n%%2
  10.       set .!n!=%%~a
  11.    )
  12.    if !m! neq 0 set /a n-=1
  13.    if !n! gtr 1 (
  14.       for /l %%a in (1 1 !n!) do (
  15.          set "var=!.%%a!!var!"
  16.          set /a x=x%%2+1
  17.          if !x! equ 2 set "var2=!var2!!var!"&set "var="
  18.       )
  19.       echo.!var2!
  20.    )
  21.    endlocal
  22. )
  23. pause
复制代码




.

[ 本帖最后由 随风 于 2009-5-10 10:51 编辑 ]
1

评分人数

    • wxcute: 还是随风兄厉害。PB + 2
技术问题请到论坛发帖求助!

TOP

“123456789代表任意字符”

是代表任意单个字符,还是多个字符的字符串。
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

返回列表