
批處理如何實現對指定字符串所在行的下一行內容進行替換初始文本如下123321123333454!!@#$%^&*()454;compiler time;;;;;;;;;;需求指定字符串是;compiler time需要在這個字符串的下一行進行數據替換,并且保留一切空格,換行等特殊符號如第一次執行批處理文件之后123321123333454!!@#$%^&*()454;compiler time0629120030;;;;;;;;;;第二次執行批處理文件之后123321123333454!!@#$%^&*()454;compiler time0629123000;;;;;;;;;;替換的文本為時間戳,自己試著弄了一下,該部分已經實現。目前的代碼的問題就是隨著執行次數會不斷的插入時間戳,而不是替換效果。要求時間戳隨著執行批處理后替換更新,而不是增加一行。自己的弄的代碼執行兩次后如下123321123333454!!@#$%^&*()454;compiler time0629131619 0629131614 ;;;;;;;;;;文本附上[attach]9891[/attach]折騰了好幾天都不知道怎么弄,雖然sed可以實現。可是要求不能使用外部程序。希望有大神解救!感謝!---------------------------UPDATE東拼西湊了一段還是算是解決了。。。可是這個code每次使用的時候會覆蓋掉;compiler time這一行,無法在這一行后面添加字段。這無法解
nclick="copycode($('code0'));">復制代碼
- @echo off & setlocal enabledelayedexpansion
- set s=&echo;
- set fn=123rambin.nvr
- set times=%TIME:~0,2%
- set zero=0
- if %times% LSS 10 (set times=%zero%%TIME:~1,2%) else (set times=%TIME:~0,2%)
- set alltimes=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%times:~0,2%%TIME:~3,2%%TIME:~6,2%
- for /f delims=: %%a in ('findstr /n ;compiler time %fn%') do set n=%%a
- set /a n+=1
- (for /f tokens=1,* delims=: %%i in ('findstr /n .* %fn%') do if not %%i equ %n% echo.%%j)>temp.txt
- move /y temp.txt %fn%
- (for /f delims= %%a in ('findstr /n .* %fn%') do (
- for /f tokens=1* delims=: %%b in (%%a)do (
- set str=%%c
- if !str:~1,13! == compiler time( echo ;compiler time%s%%alltimes% ) else (echo,%%c)
- )))>temp.txt
- move /y temp.txt %fn%
- :pause

