我需要根据节点剪切或移动XML文件, 等我想通过文件搜索来搜索EG FX 并将包含tfx的文件移动到其他位置
我尝试以下操作均未成功
$dir = 'C:\temp\source'
Get-ChildItem -Path $dir -Filter *.xml | Foreach-Object {
$Instrument = Select-Xml -Xpath '/deal' -Path $_.FullName -ErrorAction SilentlyContinue
If($Instrument.node.innertext -eq "FX_Cross"){
Move-Item "C:\temp\source\*.xml" "C:\temp\destination\FX" -Force
} Else{
Move-Item "C:\temp\source\*.xml" "C:\temp\destination\" -Force
}
}
以上没有结果不会运行
答案 0 :(得分:1)
您在那儿很费力(我想,我确实需要您的XML文件样本),我想您已经在这里挂了
Move-Item "C:\temp\source\*.xml" "C:\temp\destination\FX" -Force
使用这一行代码,您是说要移动所有XML 文件,我认为您应该只是在循环中引用当前文件。就是这里(重写了一点点以便于调试ForEach
循环)。
$dir = 'C:\temp\source'
$xmlFiles = Get-ChildItem -Path $dir -Filter *xml
ForEach($xmlFile in $xmlFiles){
$Instrument = Select-Xml -Xpath '/deal' -Path $xmlFile.FullName -ErrorAction SilentlyContinue
If($Instrument.node.innertext -eq "FX_Cross"){
Move-Item -Path $xmlFile.FullName -Destination "C:\temp\destination\FX" -Force
}
Else{
Move-Item -Path $xmlFile.FullName -Destination "C:\temp\destination\" -Force
}
}