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

[文本处理] 批处理怎样替换文本指定内容?

在目录下我有有些文本如下
&ACCESS
;******BATHOME*******
BATHOME(NET589WP1234,666666,ACTION)
BATHOME(NET892WP1256,666666,ACTION)
BATMAN(NET789WP1235_P1,666666,ACTION)
BATHOME(NET523WP1255,666666,ACTION)
BATHOME(NET589WP1266,666666,ACTION)
BATHOME(NET789WP1235_P1,666666,ACTION)

想要变成
BATHOME(NET589WP1234,5891234,ACTION)
BATHOME(NET892WP1256,8921256,ACTION)
BATMAN(NET789WP1235_P1,666666,ACTION)
BATHOME(NET523WP1255,5231255,ACTION)
BATHOME(NET587WP1266,5871266,ACTION)
BATHOME(NET789WP1235_P1,7891235,ACTION)

也就是把第二节NET后面的3位数字+WP后面的四位数字替换,第三节666666内容
还有一点就是只能替换BATHOME行,不能对batman进行替换
个人苦思冥想实在想不出,只能变其中一行后面就歇菜了

回复 3# Batcher
  1.     @echo off%
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%k in ('dir /b test.txt') do  (
  4.          for /f %%l in ('type "%%k"') do set STR=%%l
  5.          for /f "tokens=2 delims=," %%j in ('find "BATHOME" "%%k"') do  set old=%%j
  6.          for /f "tokens=2 delims=(," %%i in ('find "BATHOME" "%%k"') do set new=%%i
  7.          set newa=!new:~3,3!
  8. set newc=!new:~8,4!
  9. )  
  10.          echo !STR:%old%=%newa%%newc%!
  11. )
  12. PAUSE
复制代码
好人呀

TOP

回复 5# Batcher
感谢!,但是我还想在请教一下,假设
BATHOME(NET589WP1234,666666,ACTION)
在ACTIO后面还有一节呢,这一节我是随机添加的

&ACCESS
;******BATHOME*******
BATHOME(NET589WP1234,666666,ACTION,GOOD)
BATHOME(NET892WP1256,666666,ACTION)
BATMAN(NET789WP1235_P1,666666,ACTION)
BATHOME(NET523WP1255,666666,ACTION,GOOD)
BATHOME(NET589WP1266,666666,ACTION)
BATHOME(NET789WP1235_P1,666666,ACTION)
怎样保留上面的信息并输出文本
当然还是要对666666这节进行更改
请谅解我啥都不懂
谢谢大神

TOP

回复 7# Batcher
Thankyou,在请教下,我还想把整个文本给输出,该怎样做呢?

TOP

回复 9# Batcher


    额,我想说的是怎样结合你的代码,输出来..

TOP

回复 11# Batcher [/b
我还是不太会,加了以后又是原样输出了,666666那一行有不变了
原谅我跟不上节奏

TOP

回复 14# Batcher

我的意思把原来的文本内容进行替换并输出结果
原先内容中还含有标题
&ACCESS
等内容
现在只能输出更改的内容,原先的标题等会被去掉

TOP

回复 16# Batcher


    啊啊啊,里面的内容虽然被替换了,但是开头行标题被省去了

TOP

回复 18# Batcher
额是我看错了万分感谢

TOP

回复 19# xczxczxcz


    大师在请教个问题,我用你的代码发现,我原先程序里面的空行会被去掉,或者
输出的内容会变成ECHO 处于关闭状态该怎么办呢?

TOP

返回列表