【问题标题】:Echo string to .txt file with multiple lines - with Windows Batch file使用多行将字符串回显到 .txt 文件 - 使用 Windows 批处理文件
【发布时间】:2014-06-25 04:18:57
【问题描述】:

我正在尝试创建一个 Windows 批处理文件,该文件创建一个包含多行的 .txt。我尝试了几种解决方案来在字符串中插入换行符,但无济于事。还有其他类似的问题/答案,但没有一个解决将整个字符串放入文本文件的问题。

我的批处理文件当前读取:

echo Here is my first line
Here is my second line > myNewTextFile.txt
pause

我的目标是读取文本文件:

Here is my first line
Here is my second line

显然,这目前不起作用,但想知道是否有人知道如何以简单的方式实现这一点?

【问题讨论】:

    标签: windows shell batch-file


    【解决方案1】:
    (
    echo Here is my first line
    echo Here is my second line
    echo Here is my third line
    )>"myNewTextFile.txt"
    pause
    

    【讨论】:

    • 这项工作做得非常好,但为了将来参考,文件名周围的“引号”标记最终没有必要了。
    • 引号不是必需的,但很好的做法,因为& 或空格字符在文件名或完整路径中。您还会发现在使用此解决方案时,需要像 ^) 一样对右括号进行转义。
    • 不幸的是,当括号'('在要回显的文本中时,这不起作用。> 和 >> 的解决方案仍然有效。
    • 为了在对话中清晰起见,无需键入“(”、“[”、“{”...这些字符的正确术语是:括号:() 括号,或方括号:[] 大括号或花括号:{}
    • @Bob Brackets 是所有这些标记的通用术语(包括括号,当然可以称为“圆括号”)。使用没有限定条件的“括号”专门表示方括号 [] 仅在美国很常见(甚至在那儿也不是通用的),而在英式英语中则表示圆括号 ()。这对任何 IMO 都更有意义,因为在计算之外,最常用的括号以巨大的边距舍入。在任何情况下,只输入类型(方形、圆形、卷曲)并明确输入它们当然是有意义的,而不是冒着混淆的风险。
    【解决方案2】:

    只需在第一行之后重复echo>>>> 表示它应该附加到文件而不是创建新文件(或覆盖现有文件):

    echo Here is my first line > myNewTextFile.txt
    echo Here is my second line >> myNewTextFile.txt
    echo Here is my third line >> myNewTextFile.txt
    pause
    

    【讨论】:

    • 最后的pause 命令是必需的,还是只是因为OP 在他的脚本中有它而添加的?
    • @AdityaVikasDevarapalli:它就在那里,因为它在海报的代码中。它不是必需的。
    • 这个接受的答案对我不起作用。
    • 注意这会在行尾写空格,因为最后一个单词和>之间有一个空格。通常不是问题,但有一些机器可读文件的问题。从源代码中删除空格进行修复。
    【解决方案3】:

    在寻找其他东西时,我偶然发现了这个同时存在的老问题,我认为还有一个值得一提的小技巧。

    所有解决方案都存在空行问题以及当行以 echo 命令本身的选项开头时。比较这些示例中的输出文件:

    call :data1 >file1.txt
    call :data2 >file2.txt
    exit /b
    
    :data1
    echo Next line is empty
    echo
    echo /? this line starts with /?
    echo Last line
    exit /b
    
    :data2
    echo:Next line is empty
    echo:
    echo:/? this line starts with /?
    echo:Last line
    exit /b
    

    现在,file1.txt 包含:

    Next line is empty 
    ECHO is off. 
    Displays messages, or turns command-echoing on or off.
    
      ECHO [ON | OFF]
      ECHO [message]
    
    Type ECHO without parameters to display the current echo setting. 
    Last line
    

    虽然 file2.txt 包含:

    Next line is empty
    
    /? this line starts with /?
    Last line
    

    echo: 的使用奇迹般地解决了 file1.txt 中的输出问题。

    除了冒号之外,您还可以将其他字符“粘贴”到echo,其中包括点、斜线……您自己试试吧。

    【讨论】:

    • 很高兴知道冒号也可以工作,我认为记录的版本是echo.echo./? whatever 中的点
    【解决方案4】:

    第 1 步:输入第 1 行,后跟 ^ 字符。

    echo Here is my first line^ 
    

    第 2 步:按 RETURN 键以提示输入更多文本

    echo Here is my first line^ 
    More?
    

    第 3 步:再次按 RETURN 键以获得更多文本的第二个提示

    echo Here is my first line^ 
    More?
    More?
    

    第 4 步:从第二个提示继续第 2 行

    echo Here is my first line^ 
    More?
    More? Here is my second line
    

    第 5 步:按 RETURN 键,将 2 个语句显示在两个单独的行中

    结果:

    echo Here is my first line^ 
    More?
    More? Here is my second line
    Here is my first line  
    Here is my second line
    

    注意
    但是,如果您希望将其保存到文件中,您可以添加最终步骤。
    第 6 步:在 > 字符的帮助下,您可以附加文件名,以便将输出保存到文件中。

    echo Here is my first line^ 
    More?
    More? Here is my second line >"myNewTextFile.txt"
    

    Example from CMD

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多