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

[文件操作] 请教怎么用批处理把文件中特定的区间给替换掉?

本帖最后由 qqask 于 2021-1-24 22:51 编辑

比如说某个n.js内容是这样的:
mu->doe = ['( tr <br>
     tekt  ( tr uapp "(Finction rood (\;)<br>
     ord  ( a b c)<br>

  )<br>
]

  mu->Koe = ['( tr<br>
     tekt  ( tr uapp "(Finction rood (\;)..<br>
     ord  ( a b c)<br>

  )<br>
]

  mu->Yoe = ['( tr <br>
     tekt  ( tr uapp "(Finction rood (\;)<br>
     ord  ( a b c)<br>

  )<br>
]
想把mu->Koe = 这段方括号[]之间的内容替换成其他字符串,比如换成这样:
mu->doe = ['( tr <br>
     tekt  ( tr uapp "(Finction rood (\;)<br>
     ord  ( a b c)<br>

  )<br>
]

  mu->Koe = [778899]

  mu->Yoe = ['( tr <br>
     tekt  ( tr uapp "(Finction rood (\;)<br>
     ord  ( a b c)<br>

  )<br>
]
mu->Koe =这段所在文件的位置不一定,方括号里面的文字也不一样。一般采用正则表达式好些吧?

回复 1# qqask


    建议使用支持正则替换的文件编辑器
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher
文件较多,且更新频繁,想弄个批处理文件一键处理完毕。
找了些能正则替换的软件,要不不支持批量正则替换,要不替换效果不是很好。

TOP

sed ":a;$!{N;ba};s/mu->Koe = \[.*\]/778899/g" n.js
这句话能实现一定的替换,但是一直替换到最后一个]号了,能不能终止在第一个]号?

TOP

  1. sed -b -E -e ":a;$!{N;ba};s/(mu->Koe = \[)[^][]*/\1778899/g" n.js
复制代码
微信:flashercs
QQ:49908356

TOP

回复 1# qqask
纯批好像也行:
  1. @echo off
  2. set n=true
  3. setlocal enabledelayedexpansion
  4. for %%i in (*.js) do (
  5.     (for /f "delims=" %%a in ('findstr /n ".*" "%%i"') do (
  6.         set "str=%%a"
  7.         set "str1=!str:*>=!"
  8.         set "str=!str:*:=!"
  9.         if "!str1:~0,3!"=="Koe" set n=false&echo,mu-^>Koe = [778899]
  10.         if !n!==true echo,!str!
  11.         if "!str!"=="]" if !n!==false set n=true
  12.     ))>#%%i
  13. )
  14. pause
复制代码

TOP

谢谢各位。
flashercs的代码挺管用。
sed的简单些,纯批的好像有点复杂,但也是一种选择。

TOP

回复 1# qqask


看你是处理的js 代码,你的代码是否可以呀js来写

TOP

返回列表