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

[文本处理] BAT脚本处理xml文件中时为何丢失空行?

在处理一组xml 文件,非ANSI 和 UTF-8 格式的(Notepad++显示编码是UCS-2 Little Endian) , xml 片段在 附件里,想要逐行读取这个文件进行处理, 使用 findstr 无法处理附件的文件(之前的笨办法是 type 1.xml>>temp.xml  这样文件会被转码为 ANSI ,findstr 就可以进行处理了,但是会多一个临时文件), 后来想到用for + type

代码如下,但是现在的问题是,xml 源文件中的 空格,在代码里无法处理, 表示很困惑, (type 1.xml >> temp.xml 是可以列出所有空行的,但是在for里一处理,不知道为啥就不行了)
  1. @echo off
  2. set "file=1.xml"
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('type %file%') do (
  5. echo.%%i >>2.xml
  6. set /a next+=1
  7. )
  8. echo !next!
  9. pause
复制代码
-----------------------------------

不知道为啥附件xml上传不上来.... 贴出来吧
  1. <?xml version="1.0" encoding="UTF-16" ?>
  2. <?xml-stylesheet type="text/xsl" href="D&P.xslt" ?>
  3. <WTT-Logger>
  4. <TRRollup
  5. Total="8"
  6. Passed="6"
  7. Failed="0"
  8. Blocked="0"
  9. Warned="0"
  10. Skipped="2" CA="dsadsadsa1" LA="sdasdsadsa1" >
  11. <rti id="sdadsadsa" />
  12. <ctx id="dsadsadsa" />
  13. </TRRollup>
复制代码

试试findstr  /n
  1. @echo off
  2. set "file=1.xml"
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=1,2 delims=:" %%i in ('type %file%^|findstr /n .*') do (
  5.   echo.%%j
  6.   set /a next+=1
  7. )
  8. echo !next!
  9. pause
复制代码

TOP

回复 1# foxli180


    把xml文件压缩一下就能传上来了

TOP

回复 2# apang

可以了!! 非常感谢, 没想到 | 在这里要转意!!!!

TOP

返回列表