如何在 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
没有。
我想在文件中使用 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
没有。