标题: [文件操作] 请教怎么用批处理把文件中特定的区间给替换掉? [打印本页]
作者: qqask 时间: 2021-1-24 22:03 标题: 请教怎么用批处理把文件中特定的区间给替换掉?
本帖最后由 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 =这段所在文件的位置不一定,方括号里面的文字也不一样。一般采用正则表达式好些吧?
作者: Batcher 时间: 2021-1-24 22:46
回复 1# qqask
建议使用支持正则替换的文件编辑器
作者: qqask 时间: 2021-1-24 22:50
回复 2# Batcher
文件较多,且更新频繁,想弄个批处理文件一键处理完毕。
找了些能正则替换的软件,要不不支持批量正则替换,要不替换效果不是很好。
作者: qqask 时间: 2021-1-24 22:57
sed ":a;$!{N;ba};s/mu->Koe = \[.*\]/778899/g" n.js
这句话能实现一定的替换,但是一直替换到最后一个]号了,能不能终止在第一个]号?
作者: flashercs 时间: 2021-1-25 07:16
- sed -b -E -e ":a;$!{N;ba};s/(mu->Koe = \[)[^][]*/\1778899/g" n.js
复制代码
作者: qixiaobin0715 时间: 2021-1-25 12:40
回复 1# qqask
纯批好像也行:- @echo off
- set n=true
- setlocal enabledelayedexpansion
- for %%i in (*.js) do (
- (for /f "delims=" %%a in ('findstr /n ".*" "%%i"') do (
- set "str=%%a"
- set "str1=!str:*>=!"
- set "str=!str:*:=!"
- if "!str1:~0,3!"=="Koe" set n=false&echo,mu-^>Koe = [778899]
- if !n!==true echo,!str!
- if "!str!"=="]" if !n!==false set n=true
- ))>#%%i
- )
- pause
复制代码
作者: qqask 时间: 2021-1-26 09:55
谢谢各位。
flashercs的代码挺管用。
sed的简单些,纯批的好像有点复杂,但也是一种选择。
作者: netdzb 时间: 2021-1-26 10:14
回复 1# qqask
看你是处理的js 代码,你的代码是否可以呀js来写
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |