标题: [文本处理] [已解决]批处理怎样批量替换文件夹中的txt中的文字? [打印本页]
作者: gung 时间: 2011-5-18 14:12 标题: [已解决]批处理怎样批量替换文件夹中的txt中的文字?
本帖最后由 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次之后,就不再替换了
各位大侠们帮帮忙了 :>
作者: batman 时间: 2011-5-18 20:55
本帖最后由 batman 于 2011-5-18 21:02 编辑
- @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 (
- set "str="&set "flag="
- for %%c in (%%b) do (
- if !n! geq 10 set "flag="
- if defined flag (
- set "str=!str! !flag!"&set "flag="&set /a n+=1
- ) else (
- set "str=!str! %%c"
- )
- if defined %%c set "flag=!%%c!"
- )
- echo !str!
- ))>$
- move /y $ "%%a"
- )
- del /q $
复制代码
作者: CrLf 时间: 2011-5-18 23:12
本帖最后由 zm900612 于 2011-5-18 23:18 编辑
用变量替换+for实现精确定位字符串...- @echo off&setlocal enabledelayedexpansion
- for %%1 in (*.txt) do (
- (for /f "delims=" %%2 in (%%~s1) do (
- set str=%%2 @
- for %%A in ("a=shoes" "the=cloth") do (
- set tmp=!str!&set str=
- for /f "tokens=1* delims==" %%B in ("%%~A") do (
- for /l %%D in (1 1 10) do (
- if defined tmp (
- if "!tmp: %%B =!" neq "!tmp!" (
- for /f "tokens=1*" %%a in ("!tmp:* %%B =!") do (
- set str=!str!!tmp:%%a %%b=!%%C
- if "%%b"=="" set str=!str:~0,-6!
- set tmp= %%b
- )
- rem 核心代码,利用tokens+变量通配替换,准确定位所有目标字符串的位置。其他部分太琐碎,我不知道该怎么解释...
- ) else if %%D==10 set str=!str!!tmp!
- )
- )
- )
- )
- echo !str:~0,-2!
- ))>$
- move $ "%%1"
- )>nul
- pause
复制代码
写完才发现似乎绕弯子了
作者: gung 时间: 2011-5-23 16:07
@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
感谢! 这个很不错
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |