我有一个行流(schtasks /query /XML
的输出),包含多个连接在一起的XML文件,并由表单的注释分隔
<!-- \Microsoft\Windows\WS\WSTask -->
我想将此输出写入单独的文件,每个文件包含一个以分隔符命名的XML文件。
答案 0 :(得分:1)
一种解决方案是连接所有行,剥离第一行和最后一行,拆分注释(保留它们),然后使用该对中的第一项作为文件名和第二项迭代遍历数组作为要保存的XML文档。这应该将您的所有任务保存到当前路径:
$tasks = schtasks /query /XML
[xml[]]$XMLTasks = ([string[]]$tasks) -join "`n" -replace '\<\/Tasks\>$' -split "(\<!--.*?-->)"|select -skip 1|%{$_.trim()}
For($i=0;$i -lt $XMLTasks.Count;$i=$i+2){
$SavePath = join-path $pwd.path ($XMLTasks[$i].'#comment'.Trim(' \').Replace('\','_')+'.xml')
$XMLTasks[$i+1].Save($SavePath)
}