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

[文本处理] 批处理怎样操作xml文件?

我有一个xml文件,想把它的第6,11,18行换成指定内容,所以写了下面的批处理
@echo off & setlocal EnableDelayedExpansion
set n=0
set path=c:\08r2moss07-rxz1200.xml
set path2=c:\test.xml
set a=2
set b=3
set c=1
for /f  %%i in (%path%) do (
set /a n+=1
if !n! equ 6 (echo ^<backup-method^>%a%^</backup-method^> >>%path2%) ^
else (if !n! equ 11 (echo ^<data-configuration^>%b%^</data-configuration^> >>%path2%) ^
else (if !n! equ 18 (echo ^<advanced^>%c%^</advanced^> >>%path2%) ^
else echo %%i >>%path2%)
)
)
)
pause
问题是在C:\test.xml中第6,11,18行分别显示了2行,第一次是原始的xml,第二行是我更改的
我的程序错在哪啊?
1

评分人数

    • Batcher: 请编辑自己的帖子,把代码放到code标签里面 ...PB -2

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims=:" %%a in ('more +7^<%~fs0') do set "#%%a=%%b"
  3. (for /f "usebackq delims=" %%a in ("c:\08r2moss07-rxz1200.xml") do (
  4.           set/a n+=1
  5.           if defined #!n! (for %%b in (!n!) do echo !#%%b!) else echo %%a
  6. ))>"c:\test.xml"
  7. exit
  8. 6:<backup-method>2</backup-method>
  9. 11:<data-configuration>3</data-configuration>
  10. 18:<advanced>1</advanced>
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

请问我的代码错在哪啊

TOP

你在1楼的代码,没有发现语法错误,检查是否源文件中存在敏感字符
  1. @echo off&setlocal enabledelayedexpansion
  2. set "#6=<backup-method>2</backup-method>"
  3. set "#11=<data-configuration>3</data-configuration>"
  4. set "#18=<advanced>1</advanced>"
  5. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "c:\08r2moss07-rxz1200.xml"') do if defined #%%a (echo !#%%a!) else echo/%%b)>"C:\test.xml"
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表