[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
这样用 SED 还不如用批处理 同样的不通用
修正最后字符为“)”的话不能取到集数问题
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (0 1 9) do set "_%%i=%%i"
  3. for /f "usebackq delims=" %%i in ("a.txt") do (
  4.   set var=%%i
  5.   for /f "tokens=1*" %%a in ("%%i") do (
  6.      if "%%b" neq "" (
  7.      set str=%%b&call:lp
  8.      if not "!e!"=="" for %%e in (!e!) do set var=!var:*%%e=!
  9.    )
  10.   if "!var!"=="%%i" (echo !var! !e!)else echo %%i
  11. set e=
  12. ))
  13. pause&exit
  14. :lp
  15. if defined str (
  16.    set v=!str:~,1!
  17.        if defined e (
  18.        set e1=!str:~1!
  19.        if defined _!v! (set e=!e!!v!) else (
  20.        if "!v!"==")" if defined e1 set "e="&goto lp
  21.        if "!v!"=="/" (
  22.        if !e! gtr !e1! set e=!e:~1!
  23.      )
  24.        set e=第!e!集&exit/b)
  25.      ) else if defined _!v! set e=!v!
  26.        set str=!str:~1!
  27.       goto lp
  28.   )
  29. if not "!e!"=="" set e=第!e!集
复制代码

[ 本帖最后由 terse 于 2009-6-16 09:03 编辑 ]
1

评分人数

    • inittab: 辛苦了。代码很好,能用纯p实现功能实属不易 ...PB + 5

TOP

terse 兄有好的思路么?

13:45 电视剧:康熙微服私访记222/30
这条可以不考虑。

TOP

terse兄的代码很好。
在处理文本方面,本就没有通用的代码,都是有针对性的,或说是局限性。
下面是1.txt内容,很懒,就不再简化了,不过效率还是不错的。
  1. s/[ \t]*$/%/
  2. s/)[0-9][0-9]/& (第&集)/;s/第)/第/
  3. s#[0-9][0-9]/.*#& (第&集)#
  4. s#[0-9]/.*#& (第&集)#
  5. s/集).*/集)/1
  6. s#(第.*/.*/.*##
  7. /:/s#/[0-9][0-9]##2;/:/s#/[0-9]##2
  8. /、/s/..、..、../& (第&/;s/、..、..%$/集)/
  9. s/(.*)/& (第&集)/;s/第(/第/;s/)集/集/;s/—..集/集/
  10. /——/s/(.*/& (第&集/;s/——..)%集/集)/;s/第(/第/
  11. s/%//
  12. /:/s/[0-9][0-9]$/& (第&集)/
  13. s/%//
复制代码
1

评分人数

    • inittab: 很好,看不太懂,呵呵,速度很快。PB + 6

TOP

谢谢各位了。先把它结掉,
有更好的代码请继续。

TOP

返回列表