找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23274|回复: 3

[文本处理] [已解决]批处理怎样批量替换文件夹中的txt中的文字?

[复制链接]
发表于 2011-5-18 14:12:38 | 显示全部楼层 |阅读模式
本帖最后由 gung 于 2011-5-23 17:15 编辑

1、一个文件夹下很多txt文档  f:/wenjianjia/2、每个文档中的a后面,the后面,this后面的第一个单词都替换为我想替换的词
   例如:a bag,a dog,a ..都替换为a shoes;而the bag,the dog,the ..都替换为the cloth;

3、如果够厉害,考虑这个问题:每个txt文档最多在替换10次之后,就不再替换了

各位大侠们帮帮忙了 :>

评分

参与人数 1PB +2 收起 理由
batman + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-5-18 20:55:44 | 显示全部楼层
本帖最后由 batman 于 2011-5-18 21:02 编辑

  1. @echo off&setlocal enabledelayedexpansion
  2. set "a=shoes"&set "the=colth"
  3. for /r f:\wenjianjia\2 %%a in (*.txt) do (
  4.      set /a n=0
  5.     (for /f "usebackq delims=" %%b in ("%%a") do (
  6.           set "str="&set "flag="
  7.           for %%c in (%%b) do (
  8.                if !n! geq 10 set "flag="
  9.                if defined flag (
  10.                   set "str=!str! !flag!"&set "flag="&set /a n+=1
  11.                   ) else (
  12.                   set "str=!str! %%c"
  13.                )
  14.                if defined %%c set "flag=!%%c!"
  15.          )
  16.          echo !str!
  17.     ))>$
  18.     move /y $ "%%a"
  19. )
  20. del /q $               
复制代码

评分

参与人数 1技术 +1 收起 理由
zm900612 + 1 简单明了

查看全部评分

发表于 2011-5-18 23:12:38 | 显示全部楼层
本帖最后由 zm900612 于 2011-5-18 23:18 编辑

用变量替换+for实现精确定位字符串...
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%1 in (*.txt) do (
  3.    (for /f "delims=" %%2 in (%%~s1) do (
  4.       set str=%%2 @
  5.       for %%A in ("a=shoes" "the=cloth") do (
  6.          set tmp=!str!&set str=
  7.          for /f "tokens=1* delims==" %%B in ("%%~A") do (
  8.             for /l %%D in (1 1 10) do (
  9.                if defined tmp (
  10.                   if "!tmp: %%B =!" neq "!tmp!" (
  11.                      for /f "tokens=1*" %%a in ("!tmp:* %%B =!") do (
  12.                         set str=!str!!tmp:%%a %%b=!%%C
  13.                         if "%%b"=="" set str=!str:~0,-6!
  14.                         set tmp= %%b
  15.                      )  
  16.    rem 核心代码,利用tokens+变量通配替换,准确定位所有目标字符串的位置。其他部分太琐碎,我不知道该怎么解释...
  17.                   ) else if %%D==10 set str=!str!!tmp!
  18.                )
  19.             )
  20.          )
  21.       )
  22.    echo !str:~0,-2!
  23.    ))>$
  24.    move $ "%%1"
  25. )>nul
  26. pause
复制代码
写完才发现似乎绕弯子了

评分

参与人数 1技术 +1 收起 理由
gung + 1 感谢帮助

查看全部评分

 楼主| 发表于 2011-5-23 16:07:33 | 显示全部楼层
@echo off&setlocal enabledelayedexpansion
set "a=shoes"&set "the=colth"
for /r f:\wenjianjia\2 %%a in (*.txt) do (
     set /a n=0
    (for /f "usebackq delims=" %%b in ("%%a") do (
          s ...
batman 发表于 2011-5-18 20:55

感谢! 这个很不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 11:31 , Processed in 0.018166 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表