-3
我想知道如何编辑XML文件中的特定属性。使用批量编辑XML属性
,我想编辑看起来像这样的属性:
<Data key="serial">912487015087068085841514</Data>
我想该文件以将值设置为随机位数。
我想知道如何编辑XML文件中的特定属性。使用批量编辑XML属性
,我想编辑看起来像这样的属性:
<Data key="serial">912487015087068085841514</Data>
我想该文件以将值设置为随机位数。
PowerShell非常擅长处理XML数据。我张贴这个来避免使用sed,jrepl.bat或其他文本操作工具的建议。 XML应该作为分层对象来处理。
<# : batch portion
@echo off & setlocal
set "xmlfile=test.xml"
powershell -noprofile "iex (${%~f0} | out-string)"
goto :EOF
: end batch/begin PowerShell hybrid code #>
function rnd([int]$digits) {
$x = foreach ($i in 1..$digits) { get-random -min 0 -max 9 }
$x -join ''
}
[xml]$xml = gc $env:xmlfile
$xml.SelectSingleNode('//Data[@key="serial"]/text()').data = rnd 24
$xml.Save($env:xmlfile)
如果你愿意,你可以更加随机性改变rnd()
函数生成24个十六进制字符(0-9和A-F)。
function rnd([int]$digits) {
$x = foreach ($i in 1..$digits) { (get-random -min 0 -max 16).toString('x') }
$x -join ''
}
...或者,您可以从每个字母数字字符生成更多。
function rnd([int]$digits) {
$x = foreach ($i in 1..$digits) { [char](48..57 + 65..90 + 97..122 | get-random) }
$x -join ''
}
但rnd()
功能在一定程度上重新发明轮子。你可以通过使用.NET的GUID
类来产生大量的随机性。
$xml.SelectSingleNode('//Data[@key="serial"]/text()').data = [guid]::NewGuid()
首先你必须找到一个能够编辑XML并调用它的命令行工具。您不使用批处理脚本编辑文件,而是将命令调用到可以执行的程序。 –
好的。我不确定,因为您可以使用批次 –
来编辑.TXT文件。您可以_can_,但它非常困难。当然,这不会阻止这个问题在这里被问到[全部](http://stackoverflow.com/questions/1946717/edit-xml-with-batch-file)[the](http:// stackoverflow。 com/questions/24584289/editing-xml-with-bat)[time](http://stackoverflow.com/questions/5298293/batch-file-code-to-edit-a-string-between-strings-in- A-dtsconfig的XML文件)。 – SomethingDark