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

ozc*_*unc 6 windows string command batch-file

我有一个名为compare的命令,它返回一个数字.我想打印一些空格,然后"文本"然后将数字写入文件.预期输出如下:

    text1
Run Code Online (Sandbox Code Playgroud)

我的代码打印text1没有空格

set "output=     text"
<nul set /p "=!output!" >> "%resultFile%"
compare -metric NCC "a.jpg" "b.jpg" "c.jpg" 2>> "%resultFile%"
Run Code Online (Sandbox Code Playgroud)

我试图打印一个制表符,echo <TAB> >> "%resultFile%"但它给了我一个错误">>此时出乎意料." 我该怎么办?提前致谢!

Mel*_*ius 1

这效果很好:

\n\n
set "output=     text"\n>> "%resultFile%" echo %output%\n
Run Code Online (Sandbox Code Playgroud)\n\n

那么在批处理本身中附加命令输出怎么样?

\n\n
set "output=     text"\ncall compare -metric NCC "a.jpg" "b.jpg" "c.jpg" 2> temp.txt\nset /p number=<temp.txt\ndel temp.txt\n>> "%resultFile%" echo %output%%number%\n
Run Code Online (Sandbox Code Playgroud)\n\n

请参阅/sf/answers/163801291/。I\xe2\x80\x99d 更喜欢该for选项,但它不适用于错误输出。

\n\n

编辑

\n\n

OP 建议将最后一行编辑为:

\n\n
echo !output!!number! >> "%resultFile%"\n
Run Code Online (Sandbox Code Playgroud)\n\n

当命令一起扩展时,例如作为or块的一部分,需要 \ !xe2\x80\x99s 而不是\xe2\x80\x99s 。然而,必须先发出命令,我们在这个问题中没有提到这一点。%ifforsetlocal EnableDelayedExpansion

\n\n

我建议进一步阅读有关交换命令和输出重定向的内容:将变量重定向到文本文件时出现额外空格的问题

\n