Board logo

标题: [文本处理] 批处理怎样查找替换文本? [打印本页]

作者: xiaoxx    时间: 2008-4-26 15:31     标题: 批处理怎样查找替换文本?

假如有这样一个文件a.txt,内容如下:

    测试替换hehe 代码hehehehe,123后面的内容都不要
    测试hehe,hehehe,随便写的12345678

要求:1,hehe全按顺序替换为haha
        2.123后面内容都不要,

期望运行批处理后文本内容变化为:
    测试替换haha代码hahahaha,123
    测试haha,hahahe,随便写的123
作者: 随风    时间: 2008-4-26 17:03

for没办法用多个字符窜作分隔符,所以变通一下
先把123替换为文本中没有的字符,比如#号。
另外:下次提问最好发在 代码咨询&讨论 区
:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in (a.txt) do (
  4.    set var=%%a
  5.    set var=!var:he=ha!
  6.    set var=!var:123=#!
  7.    for /f "delims=#" %%i in ("!var!") do echo %%i123
  8. )
  9. pause
复制代码

作者: namejm    时间: 2008-4-26 17:43

  套用 随风 的思路,考虑特殊字符、带空行等极端情况,并且假定a.txt中没有出现#符号,但必须出现123字符串,给出一个较为完善的代码:
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set "str=%%i"
  4.     setlocal enabledelayedexpansion
  5.     set "str=!str:*:=!"
  6.     set "str=!str:hehe=haha!"
  7.     set "str=!str:123=#!"
  8.     for /f "delims=#" %%j in ("!str!") do echo.%%j123
  9.     endlocal
  10. )
  11. pause
复制代码

作者: xiaoxx    时间: 2008-4-26 17:49

先谢了再看。
作者: czyceo    时间: 2019-7-26 11:21

谢了,再看




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