Board logo

标题: [文本处理] 如何利用.bat将文件的字符串的行区间替换? [打印本页]

作者: xuyihui_2008    时间: 2021-10-28 18:16     标题: 如何利用.bat将文件的字符串的行区间替换?

本帖最后由 xuyihui_2008 于 2021-10-28 18:47 编辑

如何利用.bat将文件的字符串的行区间替换?
如图格式为xml格式文件,需要将Algo_Dubins分组下
这些内容全部替换掉,替换的源来自sourse.txt请问我该如何识别<GroupName>Algo_Dubins</GroupName>标志,并将标志后的<File>和</Files>之间的内容做替换
  1. ..\UserSource\AlgoTask\AlgoSrc\RefModel_SystemArchitecture_V10_v3.090_v10.059\Toplevel_AllIn\RefModel_SystemArchitecture.c</FilePath>
  2.             </File>
  3.           </Files>
  4.         </Group>
  5.         <Group>
  6.           <GroupName>Algo_Dubins</GroupName>
  7.           <Files>
  8.             <File>
  9.               <FileName>autonomouscodegen_dubins.cpp</FileName>
  10.               <FileType>8</FileType>
  11.               <FilePath>..\UserSource\AlgoTask\AlgoSrc\RefModel_SystemArchitecture_V10_v3.090_v10.059\Dubins\src\autonomouscodegen_dubins.cpp</FilePath>
  12.             </File>
  13.           </Files>
  14.         </Group>
  15.         <Group>
  16.           <GroupName>Algo_Utils</GroupName>
  17.           <Files>
  18.             <File>
  19.               <FileName>abs_CnlffMg0.c</FileName>
  20.               <FileType>1</FileType>
  21.               <FilePath>..\UserSource\AlgoTask\AlgoSrc\RefModel_SystemArchitecture_V10_v3.090_v10.059\Utils\abs_CnlffMg0.c</FilePath>
复制代码

作者: qixiaobin0715    时间: 2021-10-29 13:44

批处理对于类似的替换并不擅长。效率可能不是太高。
  1. @echo off
  2. set m=0
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in (test.xml) do (
  5.     set "str=%%i"
  6.     if defined m (
  7.         echo,%%i
  8.         if "!str:~-23,11!"=="Algo_Dubins" set m=1
  9.         if !m!==1 if "!str:~-6!"=="<File>" set m=
  10.     ) else (
  11.         if "!str:~-6!"=="/File>" (
  12.             set m=0
  13.             type,sourse.txt
  14.             echo,%%i
  15.         )
  16.     )
  17. )
  18. pause
复制代码
判断语句太多。




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