命令输出到具有批脚本的文件



我正在尝试生成一个xml文件。我使用一个返回数字的命令来比较两个图像。但是,当我试图将其输出重定向到一个文件时,它会打印带有换行符的数字。

        echo a.jpg >> "result.txt"
        compare -metric NCC "a.jpg" "b.jpg" "c.jpg" 2>> "result.txt"

预期输出如:

        a.jpg 1

但它输出:

        a.jpg
        1

我试图从命令中获得结果,并试图与.jpg连接,但我无法成功。

        for /f "tokens=1 delims=" %%a in ('compare -metric NCC "a.jpg" "b.jpg" "c.jpg"') do set result=%%a
        echo %result% 
        REM outputs 1ECHO is off.

现在我知道了,发生了什么:

compare -metric NCC "a.jpg" "b.jpg" "c.jpg" 2>> "result.txt"

您想要的输出是在STDERR上,而不是在STDOUT上(非常不寻常)。但for仅捕获STDOUT。

应该可以调整for结构,但使用起来更简单:

<nul set /p "=a.jpg " >> "result.txt"
REM this line writes a string without linefeed
compare -metric NCC "a.jpg" "b.jpg" "c.jpg" 2>> "result.txt"
REM this line appends the STDERR of the "compare" command to the line

第一个命令添加一个换行符。这样使用它可以避免它,并在一行中获得输出。

echo|set /p=a.jpg >> "result.txt"

相关内容

  • 没有找到相关文章

最新更新