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

[文本处理] 如何利用.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>
复制代码

批处理对于类似的替换并不擅长。效率可能不是太高。
  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
复制代码
判断语句太多。

TOP

返回列表