[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样查找替换文本?

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

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

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

期望运行批处理后文本内容变化为:
    测试替换haha代码hahahaha,123
    测试haha,hahahe,随便写的123

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
复制代码
技术问题请到论坛发帖求助!

TOP

  套用 随风 的思路,考虑特殊字符、带空行等极端情况,并且假定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
复制代码

TOP

先谢了再看。

TOP

谢了,再看

TOP

返回列表