我有以下XML文件:
<MyXML myatt="true">
<MyElement>Test</MyElement>
</MyXML>
我想通过.bat文件更改attirbute myatt
我怎样才能用PowerShell做到这一点?
谢谢!
答案 0 :(得分:1)
我认为我找到了解决方案,但我不认为这是最好的解决方案
<# : 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)
答案 1 :(得分:0)
@ECHO Off
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q35534146.txt"
SET "outfile=%destdir%\outfile.txt"
SET "tag=%1"
SET "attribute=%2"
SET "value=%~3"
IF NOT DEFINED value ECHO(Required tag, attribute, "value"&GOTO :EOF
(
FOR /f "usebackqdelims=" %%a IN ("%filename1%") DO (
FOR /f "tokens=1,2delims=<=> " %%c IN ("%%a") DO (
SET "changed="
IF /i "%%c"=="%tag%" IF "%%d"=="%attribute%" SET "changed=y"&ECHO(^<%%c %attribute%="%value%"^>
IF NOT DEFINED changed ECHO(%%a
)
)
)>"%outfile%"
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了一个名为q35534146.txt
的文件,其中包含我的测试数据。
生成定义为%outfile%
的文件我使用的文件名.txt
并不重要,请根据需要替换为.xml
。
请注意,这只是替换任何开头的行
分隔符标签的分隔符属性的分隔符任何
与
<tag attribute="value">
以
运行thisbatch 标记属性&#34;所需的值&#34;
其中仅当值包含空格之类的分隔符时才需要引号。