【问题标题】:How can I add greater than and less than into a batch file variable如何将大于和小于添加到批处理文件变量中
【发布时间】:2021-01-11 19:07:26
【问题描述】:

当我尝试时

@echo off
set PTag=^<BR^>
echo %PTag%

我什么也得不到。

现在有趣的是,如果在最后一个回显之后有一个空行,我会得到:

The syntax of the command is incorrect.

如果我把@echo 去掉,那么它实际上会输出

echo <BR>

我想在变量中添加各种 HTML 标记,然后将这些变量连接起来创建一个 HTML,我将在文件中输出。

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    set PTag=^&lt;BR^&gt; 将值 &lt;BR&gt; 设置为 PTag

    当您运行 echo %PTag% 时,它会扩展为 echo &lt;BR&gt;,这是一个无效的重定向。您需要使用此方法转义 PTag 内的 &lt;&gt;

    set PTag=^^^<BR^^^>
    

    第一个^ 自行转义,然后下一个&lt;&gt; 转义

    你也可以用这个

    set "PTag=^<BR^>"
    

    第二种方式的原因:内引号^失去了特殊意义

    如果是引号 (") 切换引号标志,如果引号标志处于活动状态,则以下特殊字符不再特殊:^ &amp; | &lt; &gt; ( )

    How does the Windows Command Interpreter (CMD.EXE) parse scripts?

    大多数特殊字符(^&amp;()&lt;&gt;| 以及标准分隔符,;=SP TAB)一旦放在"" 之间就失去了它们的特殊含义,并且"" 本身不会成为变量值的一部分

    Special Characters in Batch File


    现在该变量将在其中包含值 ^&lt;BR^&gt;,它会将 echo %PTag% 扩展为

    echo ^<BR^>
    

    这是一个有效的命令

    【讨论】:

      【解决方案2】:

      只需引用您的set

      set "PTag=^<BR^>"
      echo %PTag%
      

      【讨论】:

      • 谢谢。您还可以添加有关答案的解释吗?我在批处理方面不是很好,因为这可能很明显,因为我不知道引号可以用来包装作业。更准确地说,我不明白为什么转义字符在引号中起作用。什么时候应该决定在命令参数周围使用引号?
      • 既然你提到了它,我不完全确定为什么,我只知道它有效 :) 关于作为转义字符和作为行继续字符的东西,我认为,这个链接可能会给你一个更好的解释robvanderwoude.com/escapechars.php
      【解决方案3】:

      在显示变量值时只需使用延迟扩展:

      @echo off
      setlocal EnableDelayedExpansion
      
      set "PTag=<BR>"
      echo !PTag!
      

      【讨论】:

        猜你喜欢
        • 2017-11-28
        • 2019-10-05
        • 2017-01-22
        • 1970-01-01
        • 2017-01-31
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多