Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过bat文件更改XML属性_Xml_Windows_Batch File - Fatal编程技术网

通过bat文件更改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

我有以下XML文件:

<MyXML myatt="true">
   <MyElement>Test</MyElement>
</MyXML>

试验
我想更改attirbute
myatt
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作为可预测格式的平面文本进行抓取和黑客攻击很容易被破坏。