Board logo

标题: [文本处理] [已解决]文本替换请大神帮忙修改下批处理代码 [打印本页]

作者: 786021512    时间: 2018-12-3 13:59     标题: [已解决]文本替换请大神帮忙修改下批处理代码

首先感谢Batcher&xczxczxcz两位大神还有以及其他
由于我测试的程序太多在后面我又发现了一些问题
出现了一下程序如
&mind Lbathomedosbat
DEF  Lbathomedosbat()
;***********************************************************
;*
;*         Created 01/10/2012 by WWW
;*
;***********************************************************

  DELAY FOR FALSE
  
  Default()
  DELAY FOR FALSE

  SetENABLE(False)
  CSTART(TRUE,1)
  MovInitAll()

  
END
LOACAL DEF SchDefault()
  AutoSTART(Gun);

   END
  
DEF Weld_1()
  InitTool(Gun)
  MovSetAcc(100)
  SovA (startGun,Exact,100)
  SovP (ToP740WP8932_20,Coarse,100,Gun,Car)
  SovP (ToP740WP8932_10,Coarse,100,Gun,Car)
  MtotP (P740WP8932,6666666,100,Opn,Gun,Car)
  MtotP (P740WP8934,6666666,100,Opn,Gun,Car)
  MtotP (P740WP9062,6666666,100,Opn,Gun,Car)
  SovP (ToP740WP6190_10,Coarse,100,Gun,Car)
  MtotL (P740WP8796,6666666,100,Opn,Gun,Car,LOAD)
  MtotL (P740WP8794,6666666,100,Opn,Gun,Car,LOAD)
  MtotL (P740WP8792,6666666,100,Opn,Gun,Car,LOAD)
  SovP (ToP740WP6186_10,Coarse,100,Gun,Car)
  SovA (startGun,Exact,100)
   END
我拿了xczxczxcz代码改了改还是会有些问题如图

现在会自动的吧空格消掉
我这电脑用不了POWERSHELL
作者: 786021512    时间: 2018-12-3 14:00

本帖最后由 786021512 于 2018-12-3 14:01 编辑

改动后的代码如下
  1. @echo off &cd/d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%m in ('dir /b *.src') do (
  4. for /f "delims= eol=" %%a in ('type "*%%m"') do (
  5. echo %%a>tmp
  6. findstr /i "Mtot" tmp>nul && (
  7. for /f "tokens=1,2* delims=," %%i in (tmp) do (
  8. set "str=%%i"
  9. set "n1=!str:~10,3!"
  10. set "n2=!str:~15,4!"
  11. echo %%i,!n1!!n2!,%%k
  12. )
  13. )||echo %%a
  14. ))>%%m
  15. del /q tmp
  16. )
  17. pause
复制代码

作者: 786021512    时间: 2018-12-3 14:03

现在还是想吧文本的空行保留并且,能够自动的对目录下含子目录的程序进行改动
谢谢各位大神
作者: xczxczxcz    时间: 2018-12-3 14:39

回复 3# 786021512

我那个是针对 bathome 写的,这样子改很容易出问题的。
作者: WHY    时间: 2018-12-3 21:52

回复 3# 786021512


    以顶楼的数据为例,你希望修改哪一行,或者修改哪几行?修改成什么样子?
作者: 786021512    时间: 2018-12-3 22:39

回复 5# WHY


    就是输出的时候保留空行,你看我2楼的代码,输出的时候空行被替代了
作者: WHY    时间: 2018-12-3 23:32

本帖最后由 WHY 于 2018-12-4 11:14 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r %%m in (*.src) do (
  4.     for /f "tokens=1,2* delims=," %%i in ('findstr /n .* "%%m"') do (
  5.         set "str=%%i"
  6.         if "!str:Mtot=!" NEQ "!str!" (
  7.             set "str=!str:*:=!"
  8.             echo;!str!,!str:~10,3!!str:~15,4!,%%k
  9.         ) else if "%%j" == "" (
  10.             echo;!str:*:=!
  11.         ) else if "%%k" == "" (
  12.             echo;!str:*:=!,%%j
  13.         ) else (
  14.             echo;!str:*:=!,%%j,%%k
  15.         )
  16.     )
  17. )
  18. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2