我需要将以下字符串(不带换行符)写入新文件:
R"(
我已经尝试过:
echo|set /p = R"( > ..\web\index.min.html
echo|set /p = R^"( > ..\web\index.min.html
echo|set /p = R\"( > ..\web\index.min.html
没有结果。
但是如果我写:
echo|set /p = R""( > ..\web\index.min.html
我得到:
R""(
两个双引号而不是一个。 我该如何解决我的问题?
最佳答案
一般来说,使用 <nul set /p =text
更好、更高效。而不是echo|set /p =text
SET/P 提示符有 bizarre rules Windows 版本之间不一致:(
最好将所有重定向放在命令之前,以便 =
之后的所有字符是提示的一部分,但规则中引用的情况除外。
棘手或导致问题的事情是导致空白,导致 =
,以及引号。
值得庆幸的是,引用可以很容易地解决。将所需的字符串括在 =
的右侧用引号引起来:
<nul >..\web\index.min.html set /p ="R"("
第一个引号将被删除,最后一个引号以及最后一个引号之后的所有尾随字符都将被删除。
或者执行上述操作,并在整个构造周围添加一组额外的引号,包括 =
:
<nul >..\web\index.min.html set /p "="R"(""
前两个引号被删除,最后两个引号也被删除,并且第二个到最后一个引号之后的所有字符都被忽略。
我不推荐这样做,但以下每个方法也可以:
<nul >..\web\index.min.html set /p ="R"(" IGNORED
<nul >..\web\index.min.html set /p "="R"(" IGNORED " IGNORED
关于windows - 如何写入包含双引号而不换行的文件文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58329532/