我已经在论坛中搜索了一种重命名的方式,但我得到了各种重命名,而不是所需的。 通过批处理文件(或PowerShell。适用于Windows)使用其中一个节点更改XML文件名
我有一个名为PO_BLABLA01_XXX.XML的XML文件 我想使用批处理文件重命名文件,使文件名为PO编号“12345”
所以有这样的内容:
<Seller>
<Name>POV AGING LIMITED</Name>
<PO_No>12345</PO_NO>
<AddressInfo>
<agrlib:Address>ALBANY ROAD</agrlib:Address>
<agrlib:Place>DESBOROUGH</agrlib:Place>
<agrlib:Country>United Kingdom</agrlib:Country>
<agrlib:Phone>9999-9999</agrlib:Phone>
</AddressInfo>
<VatRegNo>8888</VatRegNo>
<BankAccount>7777</BankAccount>
</Seller>
我需要将我的文件从“PO_BLABLA01_XXX.XML”重命名为12345.XML,即&lt; PO_NO&gt;字段。
任何人都可以为我指出一些亮点:) 谢谢!
答案 0 :(得分:2)
清理XML后(<PO_No>
结束标记具有不同的大小写;没有为agrlib
前缀设置名称空间):
[xml]$x = Get-Conent $InputFileName
$OutputFileName = $x.Seller.PN_No
Rename-Item -Path $InputFileNAme -NewName "$($OutputFileName).xml"
应该这样做。
答案 1 :(得分:0)
如果修复XML不是一个选项(因为PowerShell将完全不知道未定义的命名空间,过滤掉行可能比解决问题的方法更多), AND (这个很大)你可以保证PO_No
元素本身就像你在例子中得到的一样,你可以抓住那一行并试图吸出标签中的内容一种非常愚蠢的方式:
FOR /F "delims=<> tokens=3" %%i IN ('findstr PO_No "%XML_FILE%"') DO RENAME "%XML_FILE%" "%%~i.xml"