在特定文本批处理后将行添加到xml文件

时间:2014-02-26 11:24:04

标签: xml batch-file

我正在尝试通过批处理向.csproj文档(xml)添加两行。因为有这么多,所以自动化非常重要。

每个文件包含以下行(两次,需要两次添加):

<WarningLevel>4</WarningLevel>

之后需要添加以下行:

<CodeAnalysisRuleSet>..\..\Ruleset\Ruleset\RuleSet1.ruleset</CodeAnalysisRuleSet>
<RunCodeAnalysis>true</RunCodeAnalysis>

如何使用批处理文件完成此操作?

要点:

  1. 遍历.csproj文件目录中的所有文件
  2. 搜索包含文字的行
  3. 在下一行添加文字

1 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
SET "sourcedir=."
FOR /f "delims=" %%a IN ('dir /b /a-d "%sourcedir%\*.csproj"') DO (
 REM the following line deletes the "...new" file
 DEL "%sourcedir%\%%~na.new" 2>nul
 FOR /f "usebackqdelims=" %%b IN ("%sourcedir%\%%a") DO (
  >>"%sourcedir%\%%~na.new" ECHO(%%b
  ECHO("%%b"|FIND "<WarningLevel>4</WarningLevel>" >nul
  IF NOT ERRORLEVEL 1 (
  >>"%sourcedir%\%%~na.new" ECHO(^<CodeAnalysisRuleSet^>..\..\Ruleset\Ruleset\RuleSet1.ruleset^</CodeAnalysisRuleSet^>
  >>"%sourcedir%\%%~na.new" ECHO(^<RunCodeAnalysis^>true^</RunCodeAnalysis^>
  )
 )
 REM use the following line to compare the files
 FC "%sourcedir%\%%~na.new" "%sourcedir%\%%a"
 REM AFTER VERIFICATION, Remove the ECHO from the following line to rename the results
 ECHO MOVE /y "%sourcedir%\%%~na.new" "%%a"
)

GOTO :EOF

这应该完成这项任务。您需要做的就是设置源目录 - 我使用当前目录进行测试。