首页 > 解决方案 > 如何通过标签(Pretty Print)使用批处理脚本标签来格式化 XML?

问题描述

假设我在一个文件中有以下格式:

         `<xml><tag><othertag>ABC</othertag></tag></xml>`

但我需要以下格式化输出:

<xml>
 <tag>
      <othertag>ABC</othertag>
 </tag>

这个格式化的输出我需要它在其他文件中。

帮助我处理能够进行此类格式化的批处理脚本。

标签: xmlbatch-fileformatting

解决方案


不应通过批处理文件处理 XML 文件。但是,这个特定的示例让我有机会使用批处理文件获得一些乐趣,并且它有效!;)

@echo off
setlocal EnableDelayedExpansion

for /F "tokens=2 delims=`" %%a in (input.txt) do set "format=%%a"

for /F %%a in ('copy /Z "%~F0" NUL') do set NL=%%a^
% Don't remove %
% these lines  %
set "SP=    "
set "format=%format:></=>^!NL^!^!SP:~0,-8^!" ^& set "SP=^!SP:~0,-4^!" ^& set /P "=</%"
< NUL (set /P "=%format:><=>!NL!!SP!" & set "SP=    !SP!" & set /P "=<%" & echo/) > output.txt

输出:

<xml>
    <tag>
        <othertag>ABC</othertag>
    </tag>
</xml>

有关所用方法的说明,请参阅此线程


推荐阅读