Как вырезать XML-файлы и переместить их в другое место на основе узлов с помощью powershell, batchfile - PullRequest
0 голосов
/ 21 мая 2019

Мне требуется вырезать или переместить файлы 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 Ответ

1 голос
/ 21 мая 2019

Вы там больше всего заблуждаетесь (я думаю, мне нужен образец вашего 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
    }
}
...