Board logo

标题: [文本处理] [已解决]批处理怎样搜索字符并替换? [打印本页]

作者: jikea    时间: 2010-10-25 18:19     标题: [已解决]批处理怎样搜索字符并替换?

搜索字符的位置不确定,可以在任意位置,如:
klxdhfiluyk n y34ry2hlnh4e73 md7hulifj5[06
psl0]lj[g78p495l6i=cvk6tktu8i0l=j8-48i[x6iu74uk-3
等等…………………………
如果我想把 3  替换成 ^4
代码该如何写
谢谢各位达人

[ 本帖最后由 jikea 于 2011-1-11 08:18 编辑 ]
作者: wuhengsi    时间: 2010-10-25 21:27

@rem 得到NC文件列表
@echo off
for %%a in (c d e f h g j k i m n) do (
if exist %%a:\ dir /b/w/s %%a:\*.nc >>%windir%\nc-list.txt
)

@rem 循环NC文件列表替换指定字符
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (%windir%\nc-list.txt) do (
for /f "tokens=*" %%i in (%%a) do (
set var=%%i
setlocal enabledelayedexpansion
set "var=!var:3=7!"
echo !var!>>%%a.tmp
)
)
cls

以上代码搜搜全盘*.NC文件,然后把找到*.NC文件里面的所有3
该为7

不知道以上代码阁下是否满意
作者: jikea    时间: 2010-10-26 07:46     标题: 回复 2楼 的帖子

我们处理文件的时候,往往只是处理一个或几个,所以我只想处理当前文件夹下的文件,
为防止处理到系统文件,其它或者软件说明文件,不希全盘搜索,就希望象记事本一样在当前文件搜索某个字符并替换掉,代码尽量简单高效,因为记事本处理速度慢所以我才想用批处理……………………谢谢回复
作者: leap    时间: 2010-10-26 11:33

  1. setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (1.txt) do set a=%%i&set b=!a:3="^4"!&echo !b:"=!
  3. pause
复制代码

作者: jikea    时间: 2010-10-26 12:31     标题: 回复 4楼 的帖子

运行后无变化
谢谢回复
作者: leap    时间: 2010-10-26 12:49     标题: 回复 5楼 的帖子

吧你的文件贴上来看看
作者: jikea    时间: 2010-10-27 18:14     标题: 回复 6楼 的帖子

klxdhfiluyk n y34ry2hlnh4e73 md7hulifj5[06
psl0]lj[g78p495l6i=cvk6tktu8i0l=j8-48i[x6iu74uk-3
作者: leap    时间: 2010-10-27 20:18     标题: 回复 7楼 的帖子

怎么会没反应我都可以
作者: wc726842270    时间: 2010-10-27 21:30     标题: 回复 8楼 的帖子

可能是环静问题吧,我在网吧也经常出现这种情况,就连
[code]
for %%i in (1 2 3 4 5) do echo %%i
[/code}
都没有反应,这的系统是XP的
作者: wuhengsi    时间: 2010-10-28 00:40

楼主我哦这段代码是最高效率的了,
它的替换效率比系统文本的替换功能要大5倍以上(快)
如果你还没有测试运行代码就胡下结论的话,没有人再会回你的贴
如果不需要全盘找指定文件的话,您可以修改删除FOR那段代码,只在单前目录下工作,如果你会的话。

@rem 得到NC文件列表
@echo off
for %%a in (c d e f h g j k i m n) do (
if exist %%a:\ dir /b/w/s %%a:\*.nc >>%windir%\nc-list.txt
)

@rem 循环NC文件列表替换指定字符
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (%windir%\nc-list.txt) do (
for /f "tokens=*" %%i in (%%a) do (
set var=%%i
setlocal enabledelayedexpansion
set "var=!var:目标字符=替换后的字符!"
echo !var!>>%%a.tmp
)
)
del %windir%\nc-list.txt
作者: jikea    时间: 2010-10-28 01:15     标题: 回复 10楼 的帖子

达人我试了很多次都没成功,不如你直接改好代码,我是新手,谢谢!
1.txt   

原后直接在里面替换
当然不要全盘搜索
我每次只要求替换一个字符



[ 本帖最后由 jikea 于 2010-10-28 01:52 编辑 ]




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