批处理 - 无法打印字符串开头的空格

Batch - Can't print spaces beginning of a string

我有一个名为比较的命令,它 returns 一个数字。我想打印一些空格,然后 "text" 然后将数字打印到文件中。预期输出如下:

    text1

我的代码打印 text1 没有空格

set "output=     text"
<nul set /p "=!output!" >> "%resultFile%"
compare -metric NCC "a.jpg" "b.jpg" "c.jpg" 2>> "%resultFile%"

我试图打印一个制表符 echo <TAB> >> "%resultFile%" 但它给了我一个错误“>> 此时是意外的。”我应该怎么办?提前致谢!

这个效果很好:

set "output=     text"
>> "%resultFile%" echo %output%

那么将命令输出附加到批处理本身呢?

set "output=     text"
call compare -metric NCC "a.jpg" "b.jpg" "c.jpg" 2> temp.txt
set /p number=<temp.txt
del temp.txt
>> "%resultFile%" echo %output%%number%

参见。我更喜欢 for 选项,但它不适用于错误输出。

编辑

OP 建议编辑最后一行:

echo !output!!number! >> "%resultFile%"

当命令一起扩展时,需要 ! 而不是 %,例如作为 iffor 块的一部分.但是,之前必须发出命令setlocal EnableDelayedExpansion,我们在这个问题中没有提到这一点。

我建议进一步阅读有关交换命令和输出重定向的内容:Problems with an extra space when redirecting variables into a text file