如何在 Batch 中不换行的情况下将双引号回显到文件中?

How to echo double quote into file without new line in Batch?

我想在文件中使用 Batch 写入 " 符号。

echo| set /p=""" >> abc.txt

这没有按预期工作,因为它在向我的文件发送数据时出错。

有什么想法吗?

你的想法 "three quotes" 不错。但是由于引用受损,解析器无法正确处理它。你必须转义其中一个(外面的一个 - 转义中间的那个不起作用):

<nul set /p =^""" >> abc.txt

<nul set /p =""^" >> abc.txt

this 详细描述了,cmd 是如何解析的。

我还把echo| set /p...改成了<nul set /p,速度快多了。管道生成两个新的 cmd 进程,因为管道的每一侧都是 运行 在一个单独的进程中,这需要时间。

这应该会为您提供添加单个 double-quote ":

所需的结果
echo| set /p=^""^">>abc.txt

这将给出双倍的结果,double-quote ""

echo| set /p=^"""^">>abc.txt

为了分解它,我们将开始和结束引号 ^" 转义并在其间插入所需的结果,这些示例在括号中显示了所需的结果,转义的 " 在括号外 ^"(")^"^"("")^"

简而言之,无论你想要中间有多少个双引号,只要将开头和结尾的double-quote转义即可。

所以使用上面带括号的例子,如果你真的这样做了:

echo echo| set /p=^"(")^"

它只会 return (")

的结果

注意 与@stephan 使用<nul 的解决方案相比,使用echo| 时的解析不同,因为管道将启动第二个进程,而<nul 没有。