标题: [文本处理] 批处理如何实现文本内容按列混排的效果? [打印本页]
作者: largedy 时间: 2009-5-10 00:07 标题: 批处理如何实现文本内容按列混排的效果?
以“。”、“!”、“?”为分介符来颠倒排列。
例:
1。2!3?4。5!6!7?8。9。
希望编排后的是:
2!1。4。3?5!6!8。7?
就是让1句与2句颠倒、3句与4句颠倒、当内容最后一句找不到颠倒的句子时,就删除最后一句。
123456789代表任意字符,但不句括“。”“?”“!”
有点难度吧???
作者: wxcute 时间: 2009-5-10 09:47
“123456789代表任意字符”
是代表任意单个字符,还是多个字符的字符串。
作者: 随风 时间: 2009-5-10 10:01
1234567890是代表任意单个字符,还是多个字符的字符串都可以
- @echo off
- for /f "delims=" %%i in (a.txt) do (
- set "str=%%i"
- setlocal enabledelayedexpansion
- set var=&set "var2="&set /a n=0,x=0
- for %%a in (。 、 ! ?) do set "str=!str:%%a=%%a" "!"
- set "str="!str:~0,-1!"
- for %%a in (!str!) do (
- set /a n+=1,m=n%%2
- set .!n!=%%~a
- )
- if !m! neq 0 set /a n-=1
- if !n! gtr 1 (
- for /l %%a in (1 1 !n!) do (
- set "var=!.%%a!!var!"
- set /a x=x%%2+1
- if !x! equ 2 set "var2=!var2!!var!"&set "var="
- )
- echo.!var2!
- )
- endlocal
- )
- pause
复制代码
.
[ 本帖最后由 随风 于 2009-5-10 10:51 编辑 ]
作者: 随风 时间: 2009-5-10 12:41
完善一下,上面代码未考虑到 1?2。 3!www 最后一位不是指定符号的情况。- @echo off&cls
- for %%a in (。 、 ! ?) do set ..%%a=a
- for /f "delims=" %%i in (a.txt) do (
- set "num=%%i"&set "str="%%i""
- setlocal enabledelayedexpansion
- set var=&set "var2="&set /a n=0,x=0
- for %%a in (。 、 ! ?) do set "str=!str:%%a=%%a" "!"
- if defined ..!num:~-1! set "str=!str:~0,-2!"
- for %%a in (!str!) do (
- set /a n+=1,m=n%%2
- set .!n!=%%~a
- )
- if !m! neq 0 set /a n-=1
- if !n! gtr 1 (
- for /l %%a in (1 1 !n!) do (
- set "var=!.%%a!!var!"
- set /a x=x%%2+1
- if !x! equ 2 set "var2=!var2!!var!"&set "var="
- )
- echo.!var2!
- )
- endlocal
- )
- pause
复制代码
作者: largedy 时间: 2009-5-10 14:52
效果已经实现,现在问个菜鸟级的问题,如何在多个文件里面批量实现上述功能,并且是修改该文件。
上面的批处理执行过后,只是在DOS里面显示出来,怎么能保存呢?如果是*.*是否可以批量修改*.*文件?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |