我需要使用powershell脚本来运行Xslt转换,该脚本递归地用于所有对象*.xml:
- 加载文件
- 转换它
- 将具有相同文件名的输出保存在同一路径中
我觉得有点像
FolderToCheck = "MyFolder"
Get-ChildItem $FolderToCheck -Filter *.xml | ForEach-Object {
# declare Xslt script for transformation
[Xml]$Xslt_script = Get-content 'MyScript.xslt'
# read xml
$File = [xml](Get-Content $_.FullName)
# Run the transformation
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform
$xslt.Load($Xslt_script)
$xslt.Transform($File,$File)
}
我总是犯错误。怎么了?你能建议修改什么吗?
感谢
感谢@Martin Honnen的建议,我对代码进行了如下修改:
Get-ChildItem $FolderToCheck -Filter *.xml | ForEach-Object {
# declare Xslt script for transformation
[Xml]$Xslt_script = Get-content 'MyScript.xsl'
# Create Output File Name
$dir = $_.DirectoryName
$BaseName = $_.Basename
$OutputFileName = $_.DirectoryName + '' + $_.Basename + '_v2.xml'
# Run the transformation
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform
$xslt.Load($Xslt_script)
$xslt.Transform($_.FullName, $OutputFileName)
rm $_.FullName
}
有了这个,我可以生成我的*_v2.xml文件,然后删除原始文件。
非常感谢