如何通过powershell,batchfile

时间:2019-05-21 12:51:35

标签: xml powershell pst

我需要根据节点剪切或移动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
  }
}

以上没有结果不会运行

1 个答案:

答案 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
    }
}