我有一个XML文件,其中包含一些数据。其中一个标签是版本标签。
我需要打开文件,将版本增加1并保存它。应该使用PowerShell-3实现自动化。
我使用-match获取具有version标记的行。这一行看起来是这样的:
<file version="18" date="12/24/2014" time="14:09" softwareversion="2.19.3">所采取的办法:
将上面的字符串放入变量中,并在其上使用split作为显示。
$line = '<file version="18" date="12/24/2014" time="14:09" softwareversion="2.19.3">'
$line.split('file version="')这样我就可以得到拆分行,取第三行,更新其中的版本,并将它们相加在一起,然后写入文件。
预计分裂的产出如下:
<
file version="
18" date="12/24/2014" time="14:09" softwareversion="2.19.3">但我得到了下面这样的东西。
<
18
dat
11/15/2014
t
m
12:03
PM
twa
2.19.3
>如何在'file version=‘处对行进行子字符串,或者如何以更简单的方式更新版本号(如果可能的话)?
(预先谢谢:)
发布于 2014-12-11 01:48:54
String.Split()对字符串中的每个字符进行拆分。所以你在“f”、“i”、“l”等词上出现了分裂
Powershell -split操作符似乎可以做您想做的事情。
PS D:\> $line -split 'file version="'
<
18" date="12/24/2014" time="14:09" softwareversion="2.19.3">或者,如果要在结果中包含分隔符.
PS D:\> $line -split '(file version=")'
<
file version="
18" date="12/24/2014" time="14:09" softwareversion="2.19.3">发布于 2014-12-11 01:57:04
或者您也可以将其作为XML文件处理,就像th一样。
$XML_CONTENT = [xml]'<file version="18" date="12/24/2014" time="14:09" softwareversion="2.19.3"></file>'
$VERSION_VALUE = [int]$XML_CONTENT.GetElementsByTagName("file").GetAttribute("version")
$XML_CONTENT.GetElementsByTagName("file").SetAttribute("version",($VERSION_VALUE + 1))
$XML_CONTENT.save("OUTPUTFILE.xml")发布于 2014-12-11 12:00:58
如果您只是想更新字符串中的softwareversion="2.19.3"号,您可以这样替换它:
$nextVersion = "2.19.4"
$line = '<file version="18" date="12/24/2014" time="14:09" softwareversion="2.19.3">'
$line = $line -replace 'softwareversion=".*"',('softwareversion="'+$nextVersion+'"')然后将$line写到文件中。
https://stackoverflow.com/questions/27413941
复制相似问题