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

回复 1# zhengwei007

以下代码针对一楼示例样本 1.xml,结果文件为 new.xml,假定同名字段(如 pAtk,mAtk)共在一个节点内(如 <for ... >)
  1. @echo off &setlocal enabledelayedexpansion
  2. set "lst=,item id, type, name,icon,bodypart,armor_type,weight,soulshots,spiritshots,crystal_type,p_dam,rnd_dam,weapon_type,critical,hit_modify,atk_speed,m_dam,price,sellable,dropable,tradeable,pAtk,mAtk,rCrit,accCombat,pAtkSpd,pAtk1,mAtk1,pDef,"
  3. set "v=!lst!"
  4. (echo,item,type,name,icon,bodypart,armor_type,weight,soulshots,spiritshots,crystal_type,p_dam,rnd_dam,weapon_type,critical,hit_modify,atk_speed,m_dam,price,sellable,dropable,tradeable,pAtk,mAtk,rCrit,accCombat,pAtkSpd,pAtk1,mAtk1,pDef
  5. for /f tokens^=1-7^delims^=^ ^<^=^" %%a in (
  6.    'findstr /rbi /c:" *.*=\"^" /c:" ^</item^>" "1.xml" ') do (
  7.    if /i "%%a"=="item id" (
  8.        set "v=!v:%%a,=%%b,!"&set "v=!v:%%c,=%%d,!"&set "v=!v:%%e,=%%f,!"
  9.    ) else if "%%e"==" />" (set "v=!v:%%b,=%%d,!"
  10.    ) else if "%%g"==" />" (
  11.        set "go=1"&for %%s in ("%%f","%%f1") do if defined go if "!v:%%~s,=%%b,!" neq "!v!" (
  12.        set "go="&set "v=!v:%%~s,=%%b,!")
  13.    ) else if /i "%%a"=="/item>" ((for %%s in (!lst!) do set "v=!v:,%%s,=,,!")&echo,!v:~1,-1!&set "v=!lst!")
  14. ))>"new.xml"
  15. endlocal&pause&exit/b
复制代码

TOP

for描述里的装备效果不止一个 ,有set 有add,有enchant,说不定可能还有sub ,div或者其他什么的
这样一来csv列数根本就不明 ,怎么弄???这能弄么???

TOP

本帖最后由 czjt1234 于 2024-11-20 21:49 编辑

你举例的这文件,有29个字段
那别的xml文件里会不会有新的字段?

是每个xml各输出一个csv,还是所有xml合并输出到一个csv?

QQ 20147578

TOP

  1. <set val="9" order="0x08" stat="pAtk" />
  2. <set val="12" order="0x08" stat="mAtk" />
  3. <enchant val="0" order="0x0C" stat="pAtk" />
  4. <enchant val="0" order="0x0C" stat="mAtk" />
复制代码
虽然是2个,但是意义不太一样,只要所有的字段顺序对了就行,一样不一样对我来说无所谓。
我想要一个通用版本的批处理,以后用别的XML文件,我只需要简单修改这个批处理里面的关键词就能通用,要不一旦变了,我还得来求助。

TOP

本帖最后由 czjt1234 于 2024-11-20 21:30 编辑

pAtk,mAtk,rCrit,accCombat,pAtkSpd,pAtk,mAtk,pDef
输出结果,第一行最后为什么有2个pAtk,mAtk
你处理csv的程序怎么分辨这2个相同的数据?

ID为7和8的为什么不输出?

QQ 20147578

TOP

powershell

TOP

返回列表