如何通过管道传输多个 exe 文件然后将结果输出到文件?

如何通过管道传输多个 exe 文件然后将结果输出到文件?

我想合并两个 json 文件,然后将输出转换为 yaml 并将其输出到文件中。我当前的代码(不起作用):

param($parentJson, $childJson)

$cmdPath = "$PSScriptRoot\jq-win64.exe"
$cmdArgList = @(
    "-s",
    ".[0] * .[1]",
    "$parentJson"
    "$childJson"
)

$cmdPath2 = "$PSScriptRoot\yq_windows_386.exe"
$cmdArgList2 = @(
    "eval",
    "-P",
    "-o=yaml"
)

$resultJson = (cmd /c $cmdPath $cmdArgList 2>&1) -join "`r`n" 

$resultYaml = $resultJson > (cmd /c $cmdPath2 $cmdArgList2)

$resultYaml

如何将两个带有多个参数的可执行文件通过管道传输到文件中?老实说,我认为这是我用 powershell 唯一容易做到的事情,但我没有足够的经验来理解为什么当你使用可执行文件 stdin/stdout 并只想将一个文件通过管道传输到另一个文件时一切都会变得如此困难。

答案1

找到了一个简单的解决方案:

param($parentJson, $childJson, $outputYaml)

.\jq-win64.exe -s '.[0] * .[1]' $parentJson $childJson | .\yq_windows_386.exe eval -P -o=yaml - > $outputYaml

相关内容