标题: [文本处理] 批处理截取指定字符输出 [打印本页]
作者: pjzhong 时间: 2021-4-13 17:12 标题: 批处理截取指定字符输出
手里有很多个类似sample01.bat的批处理文件,里面有很多以“@REPLINE”开头的行,目的是将某个变量的值更改。
我想请假论坛里的大佬,如何写个批处理文件将以“@REPLINE”开头的行中,所有变量最终的值输出到一个TXT文档中。
sample01.bat文件中内容为:
.........
@REPLINE MACROH_B.INC MCR_BECS_A88=0 MCR_BECS_A88=1
@REPLINE MACROH_B.INC MCR_BECS_A18=0 MCR_BECS_A18=1
@REPLINE MACROH_B.INC MCR_H_E8801=0 MCR_H_E8801=1
@REPLINE MACROH_B.INC MCR_HUA_CHA=1 MCR_HUA_CHA=0
@REPLINE MACROH_B.INC MCR_SERVO=0 MCR_SERVO=1
@REPLINE MACROH_B.INC MCR_ES108_01=1 MCR_ES108_01=0
.........
希望得到的内容为:
MCR_BECS_A88=1
MCR_BECS_A18=1
MCR_H_E8801=1
MCR_HUA_CHA=0
MCR_SERVO=1
MCR_ES108_01=0
注意:变量名并没有固定的格式和长度;
作者: Batcher 时间: 2021-4-13 17:23
回复 1# pjzhong - @echo off
- cd /d "%~dp0"
- (for /f "tokens=4" %%i in ('type "sample01.bat" ^| findstr "^@REPLINE"') do (
- echo,%%i
- ))>"sample01_new.bat"
复制代码
作者: pjzhong 时间: 2021-4-14 12:13
非常感谢!!!
有一个新问题:sample01.bat也是一个批处理,能不能把你的这段代码和sample01.bat整合到一起?也就是说让这个批处理文件可以查找自身的内容,并输出结果。
我试了试,没有成功。
作者: pjzhong 时间: 2021-4-14 16:03
因为我的目录下有很多个类似的批处理,我需要在他们每次运行时都输出一个变量最终值清单。
我把您写的代码做成一个批处理文件,用CALL调用,但是总是报“'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件。”,如果单独运行你的代码就不会有问题。
我按照百度的方法添加环境变量还是不能解决(其实环境变量本来就没有问题)。
请问是什么原因?怎么才能解决?
作者: pjzhong 时间: 2021-4-14 16:35
为什么我上传不了附件??
下面是我的其中一个批处理文件内容:- @set path=C:\Program Files\Paradigm\bin;C:\asm86;C:\Program Files\TortoiseSVN\bin
- @CALL try_dv.bat
- @set oldver=260
-
- @DEL *.bin
- @DEL MX8*.rom
- @DEL dp108.obj
- @DEL ep108.obj
-
- @COPY /Y MACROH.INC MACROH_B.INC
-
- @copy /y %0 sample.bat
- pause
- ::这里我调用您的代码,但是会报错,也没有输出结果。
- @call test.bat
- pause
-
- REM 系统
- @REPLINE MACROH_B.INC MCR_BECS_A88=0 MCR_BECS_A88=1
- @REPLINE MACROH_B.INC MCR_BECS_A18=0 MCR_BECS_A18=1
- @REPLINE MACROH_B.INC MCR_H_E8801=0 MCR_H_E8801=1
-
- REM 主轴
- @REPLINE MACROH_B.INC MCR_HUA_CHA=1 MCR_HUA_CHA=0
- @REPLINE MACROH_B.INC MCR_DH_SERVO=0 MCR_DH_SERVO=1
-
- REM 绣框
- @REPLINE MACROH_B.INC MCR_ES108_01=1 MCR_ES108_01=0
- @REPLINE MACROH_B.INC MCR_FRAME_XY=0 MCR_FRAME_XY=1
- @REPLINE MACROH_B.INC MCR_FRAME_SV=0 MCR_FRAME_SV=1
-
- REM 剪线
- @REPLINE MACROH_B.INC MCR_USUAL_JX=1 MCR_USUAL_JX=0
- @REPLINE MACROH_B.INC MCR_YLUN_JX=0 MCR_YLUN_JX=1
- @REPLINE MACROH_B.INC MCR_YLDJ_GX=0 MCR_YLDJ_GX=1
- @REPLINE MACROH_B.INC MCR_STEP_CUT=0 MCR_STEP_CUT=1
-
- REM paradigm仿真
- rem @REPLINE MACROH_B.INC MCR_PARADIGM=0 MCR_PARADIGM=1
-
- REM 其他
- @REPLINE MACROH_B.INC MCR_CMD_E601=0 MCR_CMD_E601=1
- @REPLINE MACROH_B.INC MCR_B_POINT=0 MCR_B_POINT=1
- @REPLINE MACROH_B.INC MCR_NEWDJ=0 MCR_NEWDJ=1
- @REPLINE MACROH_B.INC MCR_UPDATE_WW=0 MCR_UPDATE_WW=1
- @REPLINE MACROH_B.INC MCR_GROUP_SEW=0 MCR_GROUP_SEW=1
-
- REM 软件附加信息
- @COPY /Y VERSION.BAT VERSION_B.BAT
- echo 'Software Additional Information:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z',00H>>VERSION_B.BAT
- @COPY /Y VERSION_B.BAT VERSION.ASM
-
- echo finish
- pause
- make -f 316_SRC.mak -B>build.log
-
-
- repascii CTRL.BIN DATE:@2001.06.06 DATE:@%newdate%
- repascii CTRL.BIN @@@E7AC.%oldver%3@@ MX89MQ0GQ%newver%11
-
- @COPY CTRL.BIN M98_DT16.BIN
-
- @fenc ctrl.bin
- @copy ff3.rom M98.rom
- @ADDFILE M98.rom ctrl.bin
- @checksum M98.rom 20000 80000 1608
- @COPY/Y M98.ROM MX89MQ0GQ%newver%11.ROM
-
- @del M98.ROM
- @del ctrl.bin
- @DEL MACROH_B.INC
-
- @ECHO OFF
- ECHO.
- ECHO ALL DONE!!!
- rem call test.bat
- pause>NUL
-
-
- :END
- REM DIR *.BIN/ON/P
复制代码
作者: Batcher 时间: 2021-4-14 17:13
回复 4# pjzhong
这个报错的原因是你的代码里面错误的修改了默认环境变量path的值,例如:
set path=C:\Program Files\Paradigm\bin;C:\asm86;C:\Program Files\TortoiseSVN\bin
改成这样试试:
set path=%path%;C:\Program Files\Paradigm\bin;C:\asm86;C:\Program Files\TortoiseSVN\bin
作者: pjzhong 时间: 2021-4-15 08:47
哦,真是豁然开朗
这个批处理文件不是我自己写的,我只想着去解决问题,没想到这里居然有一个这么大的坑...
我说我查环境变量好像没发现问题。
真是太感谢了!!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |