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

[文本处理] 批处理截取指定字符输出

手里有很多个类似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

注意:变量名并没有固定的格式和长度;

哦,真是豁然开朗

这个批处理文件不是我自己写的,我只想着去解决问题,没想到这里居然有一个这么大的坑...
我说我查环境变量好像没发现问题。

真是太感谢了!!

TOP

回复 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
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

为什么我上传不了附件??

下面是我的其中一个批处理文件内容:
  1. @set path=C:\Program Files\Paradigm\bin;C:\asm86;C:\Program Files\TortoiseSVN\bin
  2. @CALL try_dv.bat
  3. @set oldver=260
  4. @DEL *.bin
  5. @DEL MX8*.rom
  6. @DEL dp108.obj
  7. @DEL ep108.obj
  8. @COPY /Y MACROH.INC MACROH_B.INC
  9. @copy /y %0 sample.bat
  10. pause
  11. ::这里我调用您的代码,但是会报错,也没有输出结果。
  12. @call test.bat   
  13. pause
  14. REM 系统
  15. @REPLINE MACROH_B.INC MCR_BECS_A88=0 MCR_BECS_A88=1
  16. @REPLINE MACROH_B.INC MCR_BECS_A18=0 MCR_BECS_A18=1
  17. @REPLINE MACROH_B.INC MCR_H_E8801=0 MCR_H_E8801=1
  18. REM 主轴
  19. @REPLINE MACROH_B.INC MCR_HUA_CHA=1 MCR_HUA_CHA=0
  20. @REPLINE MACROH_B.INC MCR_DH_SERVO=0 MCR_DH_SERVO=1
  21. REM 绣框
  22. @REPLINE MACROH_B.INC MCR_ES108_01=1 MCR_ES108_01=0
  23. @REPLINE MACROH_B.INC MCR_FRAME_XY=0 MCR_FRAME_XY=1
  24. @REPLINE MACROH_B.INC MCR_FRAME_SV=0 MCR_FRAME_SV=1
  25. REM 剪线
  26. @REPLINE MACROH_B.INC MCR_USUAL_JX=1 MCR_USUAL_JX=0
  27. @REPLINE MACROH_B.INC MCR_YLUN_JX=0 MCR_YLUN_JX=1
  28. @REPLINE MACROH_B.INC MCR_YLDJ_GX=0 MCR_YLDJ_GX=1
  29. @REPLINE MACROH_B.INC MCR_STEP_CUT=0 MCR_STEP_CUT=1
  30. REM paradigm仿真
  31. rem @REPLINE MACROH_B.INC MCR_PARADIGM=0 MCR_PARADIGM=1
  32. REM 其他
  33. @REPLINE MACROH_B.INC MCR_CMD_E601=0 MCR_CMD_E601=1
  34. @REPLINE MACROH_B.INC MCR_B_POINT=0 MCR_B_POINT=1
  35. @REPLINE MACROH_B.INC MCR_NEWDJ=0 MCR_NEWDJ=1
  36. @REPLINE MACROH_B.INC MCR_UPDATE_WW=0 MCR_UPDATE_WW=1
  37. @REPLINE MACROH_B.INC MCR_GROUP_SEW=0 MCR_GROUP_SEW=1
  38. REM 软件附加信息
  39. @COPY /Y VERSION.BAT VERSION_B.BAT
  40. 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
  41. @COPY /Y VERSION_B.BAT VERSION.ASM
  42. echo finish
  43. pause
  44. make -f 316_SRC.mak -B>build.log
  45. repascii CTRL.BIN DATE:@2001.06.06 DATE:@%newdate%
  46. repascii CTRL.BIN @@@E7AC.%oldver%3@@ MX89MQ0GQ%newver%11
  47. @COPY CTRL.BIN M98_DT16.BIN
  48. @fenc ctrl.bin
  49. @copy ff3.rom   M98.rom
  50. @ADDFILE M98.rom ctrl.bin
  51. @checksum M98.rom 20000 80000 1608
  52. @COPY/Y M98.ROM MX89MQ0GQ%newver%11.ROM
  53. @del M98.ROM
  54. @del ctrl.bin
  55. @DEL MACROH_B.INC
  56. @ECHO OFF
  57. ECHO.
  58. ECHO ALL DONE!!!
  59. rem call test.bat
  60. pause>NUL
  61. :END
  62. REM DIR *.BIN/ON/P
复制代码

TOP

因为我的目录下有很多个类似的批处理,我需要在他们每次运行时都输出一个变量最终值清单。
我把您写的代码做成一个批处理文件,用CALL调用,但是总是报“'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件。”,如果单独运行你的代码就不会有问题。
我按照百度的方法添加环境变量还是不能解决(其实环境变量本来就没有问题)。
请问是什么原因?怎么才能解决?

TOP

非常感谢!!!

有一个新问题:sample01.bat也是一个批处理,能不能把你的这段代码和sample01.bat整合到一起?也就是说让这个批处理文件可以查找自身的内容,并输出结果。

我试了试,没有成功。

TOP

回复 1# pjzhong
  1. @echo off
  2. cd /d "%~dp0"
  3. (for /f "tokens=4" %%i in ('type "sample01.bat" ^| findstr "^@REPLINE"') do (
  4.     echo,%%i
  5. ))>"sample01_new.bat"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表