使用Windows批处理文件将字符串回显到具有多行的.txt文件

71

我正在尝试创建一个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

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

4个回答

128
(
echo Here is my first line
echo Here is my second line
echo Here is my third line
)>"myNewTextFile.txt"
pause

16
引号并非必需,但当文件名或完整路径中包含 & 或空格字符时,它们是很好的实践。当使用这种解决方案时,您还会发现需要转义闭合括号,例如 ^) - foxidrive
2
不幸的是,当要回显的文本中包含括号“(”时,这种方法无法正常工作。使用>和>>的解决方案仍然有效。 - michael_s
1
为了在对话中保持清晰并消除输入“(”,“[”,“{”等字符的需要...这些字符的正确术语是: 圆括号:() 方括号:[] 花括号:{} - Bob
3
@Bob Brackets 是一个通用术语,包括所有这些标记(包括可以称为“圆括号”的括号)。在没有限定的情况下使用“brackets”来特指方括号[]仅在美国普遍(甚至并非全美),而在英式英语中,“brackets”会指代圆括号()。这样做更加合理,尤其是在计算机以外的领域,圆括号是远远最常用的括号形式。无论如何,明确地打出括号的类型(方括号、圆括号、花括号)比冒险引起混淆要有意义得多。 - Arthur Tacca
@michael_s 这个问题的解决方案就在你上面的评论中:用插入符号“^”转义任何圆括号即可。 - Arthur Tacca
显示剩余6条评论

38

只需要在第一行之后重复使用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

1
pause 命令在结尾是否必需,还是只是因为 OP 在脚本中加入了它? - Aditya Vikas Devarapalli
1
@AdityaVikasDevarapalli:这只是因为它出现在发布者的代码中而已,不是必需或必要的。 - Ken White
2
被接受的答案对我没用,但这个可以。 - starikcetin
请注意,这将在行末写入空格,因为最后一个单词和 > 之间有一个空格。通常不是问题,但对于某些机器可读文件来说可能很难处理。从源代码中删除空格以进行修复。 - Krishty

11

在搜索其他内容时,我无意中发现了这个旧问题,我有一个额外的小技巧值得一提,我认为这很重要。

所有解决方案都存在空行和当行以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 - NiKiZe

2

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

echo Here is my first line^ 

步骤二:按回车键以获取更多文本提示

echo Here is my first line^ 
More?

步骤三:再按一次回车键,获取第二个提示符以输入更多文本

echo Here is my first line^ 
More?
More?

第四步:从第二个提示继续第2行。
echo Here is my first line^ 
More?
More? Here is my second line

步骤五:按下回车键,将会在两行上显示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"

CMD示例

这是一个来自CMD的示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接