【问题标题】:Windows bacth scripting: Problem exporting variable to txtWindows 批处理脚本:将变量导出到 txt 时出现问题
【发布时间】:2020-06-29 02:34:49
【问题描述】:

我有一个带有 html 代码的变量(具有主要、次要符号) 我需要将其导出并附加到 txt

set WORD1=^<p^>^<strong^>PROBLEM^</strong^> with something;n^</p^>

我无法像这样回显变量

echo %WORD1%

我需要将其导出/附加到文件中。我用过:

echo %WORD1% >body.txt

但这会产生错误,因为变量具有次要/主要符号

如果我对变量进行双引号,则导出的文本会用双引号导出(显然这不是我需要的)

【问题讨论】:

  • %WORD1%的实际内容是什么?
  • PROBLEM with something;n

    如果我双引号变量并回显它,它会出现:“

    PROBLEM 有东西;n

    "
  • 是的,echo 使用" 作为文字...你是什么意思主要/次要符号
  • 如果这是整个字符串,试试set WORD1=^^^&lt;p^&gt;^^^&lt;strong^^^&gt;PROBLEM^&lt;/strong^&gt; with something;n^^^&lt;/p^^^&gt;
  • 主要/次要符号

标签: windows batch-file variables cmd export


【解决方案1】:

定义变量,使用:

set "WORD1=<p><strong>PROBLEM</strong> with something;n</p>"

要“导出”变量,请使用:

(
set /P "=%WORD1%"
echo/
) > body.txt < NUL

【讨论】:

    【解决方案2】:

    要以安全的方式定义变量,您需要将整个赋值表达式括在引号中:

    set "WORD1=<p><strong>PROBLEM</strong> with something;n</p>"
    

    这避免了escaping 的需要,除非字符串本身包含引号。

    请注意,此语法仅适用于启用command extensions,但无论如何这是命令提示符中的默认设置。


    要以安全的方式返回/扩展任意字符串,即使它本身包含引号,也要使用delayed variable expansion

    echo(!WORD1!
    

    要安全地将输出写入文件,请将redirection expression 放在前面:

    > "body.txt" echo(!WORD1!
    

    【讨论】:

      【解决方案3】:

      您也可以在一行中执行此操作:

      set "WORD1=<p><strong>PROBLEM</strong> with something;n</p>"&&>body.txt cmd/v/cecho.!WORD1!
      
      rem :: Or, without defining a previous variable, if it is not necessary:
      
      >body.txt <nul set/P "=<p><strong>PROBLEM</strong> with something;n</p>"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-26
        • 2020-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-04
        • 2017-12-11
        • 2019-01-28
        相关资源
        最近更新 更多