在sed for Windows中转义双引号

在sed for Windows中转义双引号,windows,batch-file,sed,Windows,Batch File,Sed,我试图使用sed将以下内容写入Windows.bat文件中的文件: 我在做这件事时遇到了一个问题,这个问题是,在Windows中,双引号转义取决于程序的实现。因此,在sed for Windows上,将序列写入文本文件是一个真正令人头痛的问题 编辑:请注意,这个问题不是关于如何在批处理中转义双引号,而是关于如何在sed for Windows中转义双引号,因此不能解决这个问题 如果有人想知道如何解决这个问题,请参阅公认的答案。那么让我们看看我是如何解决这个问题的。这是测试批处理文件,我将在下面解

我试图使用sed将以下内容写入Windows.bat文件中的文件:

我在做这件事时遇到了一个问题,这个问题是,在Windows中,双引号转义取决于程序的实现。因此,在sed for Windows上,将序列写入文本文件是一个真正令人头痛的问题

编辑:请注意,这个问题不是关于如何在批处理中转义双引号,而是关于如何在sed for Windows中转义双引号,因此不能解决这个问题


如果有人想知道如何解决这个问题,请参阅公认的答案。

那么让我们看看我是如何解决这个问题的。这是测试批处理文件,我将在下面解释其含义:

SET ConfigurationName="Test"
sed "1 a  <PropertyGroup Condition=\""'$(Configuration)|$(Platform)'" == "'%ConfigurationName%|AnyCPU'\"">" "C:\Users\x\outputfile.txt" -i
在Windows的sed中,双引号的转义使用\。 通常,至少在VisualStudio代码的终端中,我可以简单地用单引号为sed编写参数,但在.bat文件中我不能这样做。这意味着我需要避开双引号

如您所见,需要序列\来转义字符,然后继续在文件中写入。如果您没有,那么$将被解释为一个新命令,Windows将无法识别它

另一件需要提及的事情是,如果在sed中写入双引号,则字符不需要转义

SET ConfigurationName="Test"
sed "1 a  <PropertyGroup Condition=\""'$(Configuration)|$(Platform)'" == "'%ConfigurationName%|AnyCPU'\"">" "C:\Users\x\outputfile.txt" -i