通过bat文件更改XML属性
我有以下XML文件:通过bat文件更改XML属性,xml,windows,batch-file,Xml,Windows,Batch File,我有以下XML文件: <MyXML myatt="true"> <MyElement>Test</MyElement> </MyXML> 试验 我想更改attirbutemyattby.bat文件 如何使用PowerShell完成此操作? 谢谢 我想我找到了解决方案,但我认为这不是最好的解决方案 <# : batch portion @echo off setlocal set "xmlfile=test.xml" power
<MyXML myatt="true">
<MyElement>Test</MyElement>
</MyXML>
试验
我想更改attirbutemyatt
by.bat文件如何使用PowerShell完成此操作?
谢谢 我想我找到了解决方案,但我认为这不是最好的解决方案
<# : batch portion
@echo off
setlocal
set "xmlfile=test.xml"
powershell -noprofile "iex (${%~f0} | out-string)"
goto :EOF
: end batch / begin PowerShell #>
[xml]$xml = gc $env:xmlfile
$nodes = $xml.SelectNodes('MyXML')
foreach($node in $nodes)
{
node.SetAttribute('myatt','false')
}
$xml.Save($env:xmlfile)
[xml]$xml=gc$env:xmlfile
$nodes=$xml.SelectNodes('MyXML')
foreach($节点中的节点)
{
node.SetAttribute('myatt','false')
}
$xml.Save($env:xmlfile)
@ECHO Off
SETLOCAL
设置“sourcedir=U:\sourcedir”
设置“destdir=U:\destdir”
设置“filename1=%sourcedir%\q35534146.txt”
设置“outfile=%destdir%\outfile.txt”
设置“标记=%1”
设置“属性=%2”
设置“值=%~3”
如果未定义值ECHO(必需的标记、属性、“值”&转到:EOF
(
对于/f“usebackqdelims=“%%a IN”(“%filename1%”)DO(
对于/f“tokens=1,2delims=“%%c IN”(“%%%a”)DO(
设置“已更改=”
如果/i“%%c”=“%tag%”如果“%%d”=“%attribute%”设置“changed=y”&ECHO(^
如果未定义,则更改回显(%%a
)
)
)>“%outfile%”
后藤:EOF
您需要更改sourcedir
和destdir
的设置以适应您的环境
我使用了一个名为q35534146.txt
的文件,其中包含用于测试的数据
生成定义为%outfile%的文件
我使用的文件名是否为.txt
,根据需要替换为.xml
,并不重要
请注意,这仅替换任何行开头
DelimiterTagDelimiterAssettributeElimiterAnything
与
作为
此批处理标记属性“需要值”
其中,只有当值包含空格等分隔符时才需要引号。向我们展示您的尝试,并解释“change
myatt
”的含义。您想更改名称还是更改值?此代码看起来(大部分)熟悉……是的,将XML解析为结构化标记是绝对正确的。如果格式发生变化,那么将XML作为可预测格式的平面文本进行抓取和黑客攻击很容易被破坏。