Board logo

标题: [文本处理] [已解决]如何写 批量替换指定的文件的文字? [打印本页]

作者: ik22    时间: 2011-1-15 16:11     标题: [已解决]如何写 批量替换指定的文件的文字?

哥们,你们好!  
   有一个文本a.txt   里面列出了一批html文件的路径 如:
D:\www\2010\1230\372.html
E:\www\2010\1120\211.html
G:\www\2010\1123\83.html
D:\www\2010\0130\1265.html
D:\www\2010\0230\22073.html
.................

另一个文件 b.txt 写了一些关键字,每行一个(大概上百个吧)。

现在我想写个批处理,能够把b.txt里面所说的关键字从a.txt里面的文件中批量替换为***        请问怎么写比较好?

小弟先谢谢了..

  1. @echo off
  2. (for /f "usebackq delims=" %%a in ("b.txt") do (
  3.     set /p =""%%a" "<nul
  4. )) >.tmp
  5. set /p KeywordList=<.tmp
  6. for /f "usebackq tokens=*" %%f in ("a.txt") do (
  7.     findstr /n .* "%%f" >.tmp
  8.     (for /f "tokens=*" %%a in (.tmp) do (
  9.         set var=%%a
  10.         SetLocal EnableDelayedExpansion
  11.         for %%w in (!KeywordList!) do set var=!var:%%~w=***!
  12.         echo,!var:*:=!
  13.         EndLocal
  14.     )) >"%%f"
  15. )
  16. del .tmp
  17. echo 完成!按任意键退出...
  18. pause >nul
复制代码

[ 本帖最后由 ik22 于 2011-1-16 19:50 编辑 ]
作者: yhcbird    时间: 2011-1-15 18:29

楼下的强大。。。。。。

[ 本帖最后由 yhcbird 于 2011-1-16 20:31 编辑 ]
作者: tmplinshi    时间: 2011-1-15 22:39

  1. @echo off
  2. (for /f "usebackq delims=" %%a in ("b.txt") do (
  3.     set /p =""%%a" "<nul
  4. )) >.tmp
  5. set /p KeywordList=<.tmp
  6. for /f "usebackq tokens=*" %%f in ("a.txt") do (
  7.     findstr /n .* "%%f" >.tmp
  8.     (for /f "tokens=*" %%a in (.tmp) do (
  9.         set var=%%a
  10.         SetLocal EnableDelayedExpansion
  11.         for %%w in (!KeywordList!) do set var=!var:%%~w=***!
  12.         echo,!var:*:=!
  13.         EndLocal
  14.     )) >"%%f"
  15. )
  16. del .tmp
  17. echo 完成!按任意键退出...
  18. pause >nul
复制代码

作者: ik22    时间: 2011-1-16 19:52     标题: 回复 3楼 的帖子

谢谢  tmplinshi 版主..




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