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

[代码合集] 批处理如何进行文本内字符串替换?

文本如下
F;///////////////////////////////////////////////
; Factory Code / Process Code
[NAME]
ALLCount=5
okcount=3


Site=NAMS
Line=B1
;///////////////////////////////////////////////
; AD Boad Debug Data


;
[ADIO]
DEBUG=0
DRIVE=c:
ALLCount=45
okcount=33
adgoldll
coelld

cjdovsa';l

end

我想把所有  allcount=后面的数字  全部用紧跟在后面的okcount=的数字  替换,其他保持不变,不能丢失空行!其实整个文本里很多allcount,
并且allcount和okcount一定是同时出现的

请高手帮帮忙!拜托了!

4楼代码什么意思完全不明白阿?
随风超版的代码把我的;//////////////// 这样的符号都丢了

@echo off
setlocal enabledelayedexpansion
set m=1
for /f "tokens=1,2 delims==" %%i in (11.txt) do (
if %%i==OKCount (set k!m!=%%j&set /a m+=1))

set n=1
for /f "usebackq delims=:" %%a in (`findstr /n "^$" 11.txt`) do (
set t!n!=%%a&set /a n+=1)


set p=0
set s=1
set r=1
for /f "eol=* tokens=1,2 delims=~" %%a in (11.txt) do (set /a p+=1&set x=%%a&set /a l=t!r!
      if !p!==!l! (echo.>>tem.txt&echo %%a>>tem.txt&set /a r+=1&set /a p+=1
        ) else if "!x:~0,8!"=="AllCount" (set /a c=k!s!&echo AllCount=!c!>>tem.txt&set /a s+=1
          ) else (echo %%a>>tem.txt )
)
pause
我自己写的,但是连续两个空行的时候就出错了!

4楼的太深奥了,完全不明白

TOP

我的原文本附件上传了,我的目的是用allcount=后面的数字用紧跟着的okcount=后面的数字代替,生成新的文本,其他的全部都不能变,包括;////// 空行等等,请指教!

其他的变了,我怕设备程序出错!

TOP

3楼的 谢谢了,你的代码好用,就是慢了点,还是谢谢你!
还有弱弱的问一下,"^"  与 ".*"效果是不是一样的阿?

TOP

确认完毕, 随风超版的代码正确,效率也好,谢谢赐教!
另外有个小问题点想请教一下
!str:*:=!  中 * 是什么意思?

TOP

已经研究明白了,学习了很多!
真是万事开头难啊

TOP

返回列表