我正在尝试生成一个XML文件。 我使用返回一个数字的命令比较两个图像。 但是当我尝试将其输出redirect到一个文件时,它会用换行符打印数字。
echo a.jpg >> "result.txt" compare -metric NCC "a.jpg" "b.jpg" "c.jpg" 2>> "result.txt"
预期的输出如下所示:
a.jpg 1
但是它输出:
a.jpg 1
我尝试从命令中获得结果,并尝试与a.jpg连接,但是我无法pipe理。
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。
应该可以做适应的构造,但使用更简单:
<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"