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

Posted

技术标签:

【中文标题】使用多行将字符串回显到 .txt 文件 - 使用 Windows 批处理文件【英文标题】:Echo string to .txt file with multiple lines - with Windows Batch file 【发布时间】: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

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于使用多行将字符串回显到 .txt 文件 - 使用 Windows 批处理文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBScript 将代码回显到文件中

将变量内容回显到文本文件中的批处理脚本[重复]

批处理脚本将变量内容回显到文本文件[重复]

如何阻止批处理文件将额外的行回显到文件中? [复制]

getline 中的段错误

for循环中的多个do命令:将字符串回显到文件然后重定向到命令窗口