我想知道如何编辑XML文件中的特定属性。
我要编辑的属性如下所示:
<Data key="serial">912487015087068085841514</Data>
我希望该文件将值设置为随机 24 位数。
答案 0 :(得分:0)
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()