【问题标题】:How to echo "2" (no quotes) to a file, from a batch script?如何从批处理脚本将“2”(无引号)回显到文件?
【发布时间】:2011-11-05 17:45:21
【问题描述】:

如何将数字 2 从批处理脚本回显到文件中?

这不起作用:

Echo 2>> file.txt

因为2>> 是一个特殊的命令。 :(

【问题讨论】:

    标签: windows batch-file cmd echo io-redirection


    【解决方案1】:

    鲜为人知的功能:重定向操作符可以去任何地方。

    >>file.txt echo 2
    

    【讨论】:

      【解决方案2】:

      使用(ECHO 2)>>file.txt。这将输出2,不带任何空格。

      【讨论】:

      • +1 天哪,太棒了!我完全没有想到这一点。 :)
      • 除非它有括号(对吗?)。 :P 现在(显然,这是一个单独的问题)我如何将 任意文件名 回显到另一个文件?它可以有括号、引号、数字等......
      • 你知道,我想我会单独问这个问题。 :)
      • 很棒的解决方案,但看起来 still 可能后面有一个 CRLF。我们如何应对这种不可阻挡的威胁?
      • 此链接here 上的答案显示了如何将数字 2 回显到不带 CRLF 的文件中。
      【解决方案3】:

      echo ^2>>file.txt 似乎对我有用。

      【讨论】:

      • 但是仍然后面有一个 CRLF(给我们 3 个字节)。怎样才能阻止呢?
      • @Pacerier -- 请参阅this answer 了解如何将数字 2 回显到没有 CRLF 后面的文件中。
      • @Pacerier 你确定这是 OP 的要求吗?
      【解决方案4】:

      使用^ 转义:

      Echo ^2>> file.txt
      

      【讨论】:

      • 顺便说一句,这背后的逻辑是什么?
      • @Pacerier - 在此上下文中的“2”将具有特殊含义。所以 ^ 转义字符用于将“2”视为普通字符。
      【解决方案5】:
      echo.2>>text.txt
      

      是的,这很奇怪。

      【讨论】:

      • 这很奇怪,只有在没有空格/制表符或,;=( 的情况下才有效。这个echo.hello(you2>>text.txt 失败了
      • @Kornel,但是仍然后面有一个 CRLF(给我们 3 个字节)。怎样才能阻止呢?
      • 此链接here 上的答案显示了如何将数字 2 回显到不带 CRLF 的文件中。
      • echo. 如果当前目录中有一个名为echo.(无扩展名)的文件可能会失败,所以最好使用echo/...
      【解决方案6】:

      另一种方法

      echo>>file.txt 2
      

      【讨论】:

      • 但是仍然后面有一个 CRLF(给我们 3 个字节)。怎样才能阻止呢?
      • link 的答案显示了如何将数字 2 回显到没有 CRLF 后面的文件。
      【解决方案7】:

      或者你可以使用延迟扩展

      setlocal EnableDelayedExpansion
      set "var=2"
      echo(!var!>> file.txt
      

      【讨论】:

      • 但是仍然后面有一个 CRLF(给我们 3 个字节)。怎样才能阻止呢?
      • link 的答案显示了如何将数字 2 回显到没有 CRLF 后面的文件。
      【解决方案8】:

      如果您需要准确的写入,请使用此命令

      (ECHO |set /p=2)>>file.txt
      

      DMan 的命令会在“2”后面产生一个 0x0D0A 换行

      【讨论】:

      • 这会将 ERRORLEVEL 设置为 1。如果希望将 ERRORLEVEL 设置为 0,您可以使用类似 (echo | set /p dummyName="2") > file.txt (source) 的内容。
      • 你可以避开管道并使用这个:< nul set /P ="2" > file.txt,但随后ErrorLevel 变为1,即使使用虚拟变量...
      • @headinabook 不仅不干净,还会将 errorlevel 设置为 0。(如果你想要 0,只需 (call )
      【解决方案9】:

      要将数字写入文件而不使用尾随换行符,您可以使用以下命令:

      cmd /C set /A "2">file.txt
      

      这是可行的,因为set /A 在命令提示符上下文中执行时返回(最后一个)结果(没有换行符)(因此直接在cmd.exe 中运行时)。

      如果你在命令提示符下工作,你可以简单地使用这个:

      set /A "2">file.txt
      

      虽然您不能在批处理文件中使用它,但您需要额外的 cmd /C 来强制执行正确的上下文。

      不用说,这当然只能输出数字,或者准确地说,是有符号的 32 位整数。

      【讨论】:

        【解决方案10】:

        根据this 的回答,如果有人想知道如何做到这一点:

        echo "command1 && command2" > file.txt
        

        如果file.txt 中没有 qoutes,那么你可以这样做:

        echo command1 ^&^& command2 > file.txt
        

        在 Windows Server 2003 上测试。

        【讨论】:

        • 嗯,这如何回答这个问题?
        • 我可能应该改写我的帖子。是对stackoverflow.com/a/7225667/1637178的补充。
        • 对不起,我还是不明白;这不是在文件中回显数字...
        【解决方案11】:

        转义字符'2'

        在 Linux 中: echo \2>file.txt

        在窗口中: echo ^2>file.txt

        在windows中也可以使用

        echo.2>file.txt echo 和点之间没有空格

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-30
          • 1970-01-01
          • 1970-01-01
          • 2015-08-31
          • 1970-01-01
          • 2010-10-06
          • 1970-01-01
          相关资源
          最近更新 更多