Board logo

标题: [文本处理] 批处理怎么替换文件中特定内容为文件名? [打印本页]

作者: liumanggege    时间: 2011-3-3 17:17     标题: 批处理怎么替换文件中特定内容为文件名?

比如文件夹下面有
index1.html,index2.html,index3.html,index4.html,index5.html..........很多个文件
每个文件里面都有字符串“woshiyigehaohaizi”
想把多个文件里红色的部分“yige”用每个文件的文件名index1,index2,index3,index4.........替换,怎么写批处理文件。
谢谢,请高手帮忙处理。

[ 本帖最后由 liumanggege 于 2011-3-3 23:08 编辑 ]
作者: liumanggege    时间: 2011-3-3 17:34

您好,怎么用??
俺 不大会,能帮写下吧?非常感谢
作者: plp626    时间: 2011-3-3 17:43

回流氓妹妹:



用sed很方便,下载sed.exe放在windows目录下,打开cmd,输入
  1. sed "s/woshiyigehaohaizi/woshiindex8haohaizi/g" yourfile.html
复制代码
sed在我网盘里找
作者: liumanggege    时间: 2011-3-3 17:56

谢谢。我找找。非常感谢。。。。。
作者: liumanggege    时间: 2011-3-3 23:13

请再看看,可以吗??谢谢
作者: Commander    时间: 2011-3-3 23:17

  1. @echo off
  2. for %%a in (*.html) do (
  3.     sed -i "s/woshiyigehaohaizi/woshi%%ahaohaizi/g" "%%a"
  4. )
复制代码

作者: liumanggege    时间: 2011-3-3 23:48

原帖由 Commander 于 2011-3-3 23:17 发表
@echo off
for %%a in (*.html) do (
    sed -i "s/woshiyigehaohaizi/woshi%%ahaohaizi/g" "%%a"
)

请帮忙再看下,好像没有变化,生成了另一个文件,但名字不一样。
作者: liumanggege    时间: 2011-3-4 00:06

另外生成的文件名是sedDOSSU这样的文件。我想让文件名不变行不行呢?
作者: hu2xu4    时间: 2011-3-4 00:08     标题: 回复 1楼 的帖子

@echo off&setlocal enabledelayedexpansion
cls&echo Replacing,pleasewait
for /r %%a in (*.html)do (
for /f "tokens=1,* delims=:" %%b in ('findstr /n ".*" "%%a"')do (
set "var=%%c"
if "!var!" neq "" set "var=!var:yige=%%~na!"
>>O echo,!var!)
move O "%%a")

这个不用外部工具,看看是否可以。
作者: caruko    时间: 2011-3-4 00:22

  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%i in (*.html) do (
  3.         for /f "delims=*" %%a in (%%i) do (
  4.                 set "str=%%a"
  5.                 set "str=!str:woshiyigehaohaizi=woshi%%~nihaohaizi!"
  6.                 >>newfile  echo,!str!
  7.         )
  8.         move /y newfile "%%i"
  9. )
复制代码

作者: Batcher    时间: 2011-3-4 00:26     标题: 回复 7楼 的帖子

试试4.1.4版本的sed
http://bbs.bathome.net/thread-1114-1-1.html




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