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

[数值计算] bat批量修改xml里某个值的数据

<data>
  <mzm.gsp.monster.confbean.SMonsterCfg catchRate="0" catchedMonsterId="0" categoryId="12" classLevel="4" classType="6" gender="1" groupId="1" id="120381150" levelHigh="200" levelLow="0" modelColorId="0" modelFigureId="0" monsterModelId="700301137" monsterSkillProbBase="10000" monsterStrategy="LHXK_littleTY" name="南疆獸王" propertyTierId="5" rewardTableId="0" typeId="3">
    <monsterSkillProbs>
      <no-comparator />
      <entry>
        <int>10000</int>
        <int>110598001</int>
      </entry>
    </monsterSkillProbs>
    <props>
      <no-comparator />
      <entry>
        <int>1</int>
        <float>7.2</float>
      </entry>
      <entry>
        <int>3</int>
        <float>100.0</float>
      </entry>
      <entry>
        <int>5</int>
        <float>3</float>
      </entry>
      <entry>
        <int>7</int>
        <float>3.6</float>
      </entry>
      <entry>
        <int>8</int>
        <float>3.39</float>
      </entry>      
    </props>
  </mzm.gsp.monster.confbean.SMonsterCfg>
</data>
用bat批量修改xml里面<float>里面的值
例如增加0.85倍要如何修改呢

float.js
  1. function parseXML(dom) {
  2.     var myErr;
  3.     if (0 !== dom.parseError.errorCode) {
  4.         myErr = dom.parseError;
  5.         WScript.Echo([
  6.             "XML parse error",
  7.             'reason: ' + myErr.reason,
  8.             'code: ' + (myErr.errorCode >>> 0).toString(16),
  9.             'filepos: ' + myErr.filepos,
  10.             'line: ' + myErr.line,
  11.             'linepos: ' + myErr.linepos,
  12.             'srcText: ' + myErr.srcText,
  13.             'url: ' + myErr.url
  14.         ].join('\n'));
  15.         return false;
  16.     }
  17.     return true;
  18. }
  19. function makeDOM() {
  20.     var dom = null;
  21.     var aXMLHttpVers = ['Msxml2.DOMDocument.6.0', 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument'];
  22.     for (var i = 0; i < aXMLHttpVers.length; i++) {
  23.         try {
  24.             dom = WScript.CreateObject(aXMLHttpVers[i]);
  25.             break;
  26.         } catch (error) { }
  27.     }
  28.     if (dom === null) return dom;
  29.     dom.async = false;
  30.     dom.validateOnParse = false;
  31.     dom.resolveExternals = false;
  32.     dom.setProperty('AllowDocumentFunction', false);
  33.     dom.setProperty('AllowXsltScript', false);
  34.     dom.setProperty('MaxElementDepth', 256);
  35.     dom.setProperty('ProhibitDTD', true);
  36.     dom.setProperty('SelectionLanguage', 'XPath');
  37.     return dom;
  38. }
  39. var file = 'data.xml',//要修改的XML文件
  40.     xmlDoc = makeDOM(),
  41.     oSelection;
  42. if (null === xmlDoc) WScript.Quit(1);
  43. xmlDoc.load(file);
  44. if (!parseXML(xmlDoc)) WScript.Quit(2);
  45. oSelection = xmlDoc.selectNodes('//float/text()');
  46. while (node = oSelection.nextNode()) {
  47.     node.nodeValue *= 1.85;
  48. }
  49. xmlDoc.save(file);
复制代码

TOP

  1. PowerShell "[xml]$xml=type 'a.xml'; $xml | Select-XML '//float' | ForEach{$_.Node.InnerText=0.85*$_.Node.InnerText}; $xml.Save('b.xml')"
复制代码

TOP

返回列表