如何从批处理文件输出中插入换行符?
我想做如下的事情:
将输出:
- 对我有用。我必须在脚本中执行echo my_app.exe。我做到了(回声)。&;&;echo。)我的app.exe
- 简单方法"代码开始:">echo hello&echo world,将为您提供所需的
- 您可以在单独的行上插入一个不可见的ascii chr(255),这将强制一个空白新行。按住[alt]键,然后按键盘上的255。这将插入chr(255),它是一个空白的正方形。即"echo(alt+255)",您只能使用键盘,而不能使用querty键盘顶部的数字!
- 正如一半的计算机维修是插入和打开它,一半的软件开发是什么,我称之为空间工程。我们需要空行。
用途:
1 2 3
| echo hello
echo.
echo world |
- 在单个echo语句中提供字符串是否可能?
- 为什么你需要用一个echo语句来做这件事;拥有另一个echo语句的危害在哪里?我想你不是简单地增加不必要的限制来取乐它…
- @Rob,我刚遇到这个问题,这些都不管用。在我的示例中,您需要在一个语句中进行回音。我正在从HTML生成一些tex文件,并使用echo"Makefile contents (which has
)"> Makefile和多个echo生成makefile,但不起作用。
- @罗布,我们当然需要一份声明……那么,你会如何将3个回声传输到一个文件中呢?
- @罗布,你不能回答布莱恩·R,邦迪的问题吗?他不要求其他方法
- 用echo;代替echo.。由于某种原因,当工作目录中正好有一个名为echo的文件时,echo.将无法工作。但是,echo;工作正常。
- 使用&;(或&;&;)在单个语句中执行这些操作:例如,将"helloworld"放在txt文件中:(echo hello & echo world) >> ./test.txt。
- 对于文件的多行输出,为什么不直接执行以下操作?echo line 1 > Makefile,然后是echo line 2 >> Makefile。使用>>会将输出附加到文件中,这正是您在这种情况下需要的行为。
echo hello & echo.world
这意味着你可以定义为一个恒定的& echo.
换行。
- 也可以不使用句号:echo hello&;echo world
- 示例不需要句点,但您需要一个句点来回送空白的空行:echo. && echo hello && echo. && echo world。
- 你能用一个echo来做这个吗?这样它就可以被重定向到一个文件了。
- @沙巴兹-埃多克斯1〔11〕。
- "回声"中的周期性事件。永远不会停止让我惊讶。它太过时了,但我还是忘了点必须与命令名严格相连,中间不能有空格。你的帖子没有错,我写这个只是为了提醒你:"回音"。="回声"!
- 缺少最终答案:$echo.>>myfile.txt这将在文件中添加换行符
- 只需要一个和号。见stackoverflow.com/a/8922307/111327
- 我只是想加上这个。我想从命令行查看系统PATH变量,但很容易阅读。这篇文章对我有帮助,我想到了这个:以东十一〔13〕,然后是以东十一〔14〕,瞧!逐行输出。
- 我有更多信息!echo.生产了一条新的生产线。echo显示文本而不是'hello' is not recognized as an internal or external command, operable program or batch file.。
- @Nathanj.Brauer,单个&也工作:(echo Hello&echo World) > ./File.txt。
- @Mattwillkie,两个&&而不是一个&有什么区别?
- @一个符号表示"做这个,然后那个",而double表示"做这个,如果没有错误,那么就做那个"。双管,||,是它的伴侣,"做这个,如果失败,那么做"。请参阅ss64.com/nt/syntax-redirection.html
- @奎泽尔卡特,它变得更加陌生。除了点以外的其他字符也可以工作。ss64说更好的语法是echo(,用于提高性能(仍然没有空间限制)。扩展讨论其他字符及其在Echo上的优缺点。无法给出文本或空行-请改用echo/
- @Mattwillkie,继续阅读下面答案中的评论…
- @Mattwilkie——从技术上讲,"做这个,然后那个"将使用一个分号(例如echo hi; echo bye;)。使用一个符号可以得到相同的结果,但是它会将两个返回值组合成一个集合的二进制值,而不是有两个独立的返回值(这比这更复杂,但这是基础haha的开始)。
- @brauer,这个命令/cmd(dos/windows)而不是bash等。分号只是另一个字符,没有任何效果。
- 注意,hello和&之间的空间也会被回音!把它移走,以避免…
在这里你去蝙蝠文件,创建一个在下面的信息:
1 2 3 4 5 6 7 8 9 10 11
| @echo off
REM Creating a Newline variable (the two blank lines are required!)
set NLM=^
set NL=^^^%NLM%%NLM%^%NLM%%NLM%
REM Example Usage:
echo There should be a newline%NL%inserted here.
echo.
pause |
你应该像下面的输出:湖
1 2 3 4
| There should be a newline
inserted here.
Press any key to continue . . . |
你只需要在REM语句的代码,显然。
- 非常令人印象深刻,您能花点时间解释一下行集nl=^^^%nlm%^%nlm%^%nlm%%nlm%是如何工作的吗?我无法完全理解
- 唉,当把echoed字符串传递给另一个程序时,这不起作用。
- @Andy Methinks A+8评论提出了一个问题:stackoverflow.com/questions/6379619/…
- 这是一个很好的例子,可以证明cmd.exe和windows批处理文件是完全疯狂的!
- 请注意:行"set nlm=^"后面不能有插入符号,后面必须有两行空白。
- 不幸的是,您不能在变量中使用它。例如,set z=foo%NL%bar & echo %z%不会给出预期的结果,它只会打印foo。
- 请看我的答案,了解更简单的方法。set nl=^&echo.,那么只有echo hello %nl% world产生相同的效果。
- 我要说的是"这里应该插入一个新行。"
有一个标准的特征echo:颞下颌关节/请求文件写的空白线,这一新的CMD模拟线路输出:
1 2 3 4
| @echo off
@echo line1
@echo:
@echo line2 |
输出:CMD文件引用。
- echo,和echo.也起作用。
- 实际上,任何未使用的特殊字符都可以工作。我总是鼓励使用/因为斜线是命令选项的标准字符。另外,我总是批评微软中有人不幸选择的点的使用,因为命令echo.com根据MS-DOS/Windows批处理命令处理器的版本给出了不同的结果。
- 唯一有效的版本是echo(。看起来可能会引起问题,但实际上效果很好。所有其他窗体都至少有一种情况,即命令无法按需要执行。
- @阿奇尼,你能为这个找到一些参考资料吗?我测试过了,它很好用,但一定有设计师的备忘录,说明书,或者至少是手册来讲述这个故事。
- @德本汉姆这更令人着迷。你知道你所说的情况的例子或解释吗?另外,您是否知道任何描述DOS和CMD命令行这一特性的设计器故事、备忘录、规范或手册?
- @NAXA——没有什么官方的,只是一些批黑客获得的集体知识。其目标是拥有可用于回送任何值(包括Nothing)的语法,并且不必担心得到预期之外的任何东西。我所知道的最好的总结是dostips.com/forum/viewtopic.php?p=4554,p45 54。这可能会让你绞尽脑汁,但从来没有人想出过这样一个场景:echo(失败了。
- @dbenham,声称echo(是唯一有效的版本是不正确的。作者反对.、+、[和],但仍有"echo=、"echo,、"echo\ 、"echo/ 、"echo:,他根本没有提及。
- @阿奇尼,为什么不是埃多克斯1〔5〕?使用/是一种误导,因为/在cmd(用于表示标志)中已经有了意义。
- @Pacerier:试试echo=/?和echo,/?,你会发现两者都失败了(因为它们没有显示"/?").从其余三种语言中,echo\/?在其他语言中看起来像是"转义",echo:/?可能被误认为是标签或驱动器。看起来"更标准"的形式是echo//?,正因为/用于命令选项!
- @起搏器-这些建议都有失败的例子。仔细阅读dostips.com/forum/viewtopic.php?p=4554,p45 54。
- @Pacier这里有足够的回声来回答一个独立的问题。可能是"哪些字符可以立即跟随echo"这一行的内容,它们的效果是什么?
- 可以确认echo(似乎是任意安全的,即使在深度嵌套的for循环中,这种循环也因特殊的字符怪异处理而臭名昭著。
喜欢肯的应答,但与使用的延迟扩展。
1 2 3 4 5 6 7 8 9 10
| setlocal EnableDelayedExpansion
(set
=^
%=Do not remove this line=%
)
echo Line1!
!Line2
echo Works also with quotes"!
!line2" |
第一单换行字符创建和分配一个n变量的。本作品为符号在线路旁边的高端商务的转义字符,但如果这是一个换行字符被忽略和它是一个读取和转义(即使这是一个换行)。然后你需要一个三换行结束第三线电流指令,否则会appended到LF变量。批处理文件有一个平衡线的结局只在Cr / LF LF CR是重要的,因为在这个阶段是从它的解析器。
酒店优势的延迟扩展是使用,这是没有在所有的特殊字符处理。echo Line1%LF%Line2会失败,因为在解析器解析换行止损单。
更多的是在讲这么长的分裂过多线命令:在Vista / DOS批处理文件(或其他)这样的窗口怎么解析脚本命令解释器(cmd.exe)?
编辑:避免echo.
这个问题不好回答的问题,如什么是多线单echo可以输出。
但尽管世界卫生组织建议使用其他的答案echo.创建一新的生产线,应该说这是echo.是最糟糕的,它很慢,它可以完全自动搜索一个文件,命名为cmd.exe echo和试图启动它。
为印刷线只是空虚,你可以使用一个
1 2 3 4 5 6
| echo,
echo;
echo(
echo/
echo+
echo= |
但echo.echo:echo\或使用,应avoided很慢,他们可以根据不同的位置,该脚本将执行,样的网络驱动。
- 如果要将带有换行符的字符串作为参数传递给批处理子例程,例如call :pause line1!
!line2,请使用setlocal EnableDelayedExpansion启动子例程,并使用setlocal DisableDelayedExpansion结束它,以防止新行过早被解释。
- +1.用于铸造echo,echo;echo(echo/echo+echo=和rogues gallery echo.echo\echo:。现在,如果你要解释一下为什么在神圣的地狱这些工作,我欠你一杯免费的啤酒。
(P)字母名称(p)(P)如果你需要它在单线上,使用字母名称1。For example,(p)字母名称(P)Would output as:(p)字母名称(P)Now,say you want some bit fancier…(p)字母名称(P)Outputs(p)字母名称(P)当你想在一个回声发言中有一条新的线的时候This is more close to your EDOCX1 theography 3 nible used in various languages.(p)(P)断电(p)(P)EDOCX1 4(音译)Sets the variable EDOCX1(p)(P)EDOCX1 6 nipls out the next symbol to follow:(p)(P)EDOCX1的意思是在同一条线上另一个指令。We don't care about errorlevel(its an Echo statement for crying out loud),so no EDOCX1.(p)(P)EDOCX1(音译)(p)(P)所有这些工作都是因为你能够实际创造出可作为守则的变量,并利用这些变量中的其他指令。It is sort of like a ghetto function,since batch is not exactly the most advanced of shell scripting languages.这仅仅是因为采用了变量,而不是在新技术、图表、图表、Strings等自然之间指定。(p)(P)如果你是疯了,你可以得到这个工作与其他事情。For example,using it to make a tab(p)字母名称
- 不要使用echo.,因为它首先尝试使用该名称查找文件。使用其他标点,如echo,。
当引用到文件重定向到的东西,多回声命令将不工作。我想是的。">"转向器是一个很好的选择。
1 2
| echo hello > temp
echo world >> temp |
- 第一个示例使用">"将创建一个新文件,第二个示例使用">>"将附加到现有文件(如果该文件尚不存在,则创建该文件)。
- NathanJ.Brauer在对(当前)公认答案作品的评论中提到了(echo hello && echo world) > temp。
就像在grimtron表明是一个快速的例子来定义它:
1 2 3
| @echo off
set newline=^& echo.
echo hello %newline%world |
输出
1 2 3
| C:\>test.bat
hello
world |
- 它实际上会在"世界"后面再加一个新行。
- @蓝色尾随的换行符似乎是批处理文件本身的函数。如果重复执行echo hello %newline%world行,两行之间没有空格。
- echo"Hello %newline% world"失败,因为它在报价中。因为这不是一条真正的新线。
(P)如果你需要一个文件,你可以使用(p)字母名称
所以,你可以这样做,
1
| (for %i in (a b"c d") do @echo %~i) |
输出将,
注意,当这是在批处理文件"%1"应的倍。
1
| (for %%i in (a b"c d") do @echo %%~i) |
- 如果您希望回送一个和号而不是换行符,此解决方案也可以工作。
- 我想我发现了一个错误:*字符
如果任何人来这里,因为他们在寻找回声线从一个复杂的化妆用makefile,i
@cmd /c echo.
简单的使用echo.dreaded process_begin: CreateProcess(NULL, echo., ...) failed.错误消息的原因。
我希望这帮助至少一人在那里:)其他
(P)To start a new line in batch,all you have to do is add"echo",like so:(p)字母名称
- 当文件名为echo[.bat时,它会很慢并且失败。
- 什么?它应该可以立即工作,而且只需删除echo[.bat文件。
- 这和Echo差不多。语法。
- 是的,而且echo.也是一个糟糕的解决方案。
- 如前面的答案所示,这将首先尝试在路径上定位一个文件,这会导致文件太慢。echo.也是如此。希望脚本的用户删除系统上的文件,只是因为脚本需要换行符,我觉得这听起来不像是好的设计。
这为我工作,不必要的延迟扩展。
1 2 3 4 5 6 7 8 9
| @echo off
(
echo ^<html^>
echo ^<body^>
echo Hello
echo ^</body^>
echo ^</html^>
)
pause |
它的输出这样写道:
1 2 3 4 5 6
| <html>
<body>
Hello
</body>
</html>
Press any key to continue . . . |
- -1 echo asdf >myfile.txt将产生完全相同的结果。echo在字符串的末尾附加新行。
- 答案很好,是唯一一个认识到用括号换行的价值的人。我相信这就是DOS的创建者想要你这样做的原因。
(P)Ken and Jeb Solutions Works Well.(p)(P)但是,新的线路只有一个特点,我需要CRLF特征(Windows version)。(p)(P)To this,at the end of the script,I have translated lf to crlf.(p)(P)例如:(p)字母名称
(P)如果有人需要使用FAMOSS在String Literals that can be passed to a variable,可以在Hello.bat script below上写一个代码:(p)字母名称(P)This way multilline output may by prepared in one place,even in other script or external file,and printed in another.(p)(P)The line break is held in newline variable.其价值必须在欧共体人道主义援助委员会的扩展之后被替换,所以我使用了当地的Setlocal Enabledelayedexpanssion to enable exclamation signs which expand variables on execution.and the execution substitutes with newline contents(look for syntax at help set).我们可以使用!Newline!只要回答了问题,就更方便了。It may be passed from outside(try helo r2 hand2),where nobody knows the name of variable holding the line break(yes,helo c3).Newline!P0 Work the same way).(p)(P)Above example may be refined to a subroutine or standalone batch,used like EDOCX1 original 10:(p)字母名称(P)Please note,that additional backslash won't prevent the script from parsing…..(p)
- 你做的基本上和杰布的回答一样。
- 我在上面读到的答案非常有用,但是我需要调用一个脚本od子例程,它将解析这样我就可以避免在任何地方实现这个技巧。这需要改进一个解决方案,我共享了这个改进。希望它不会伤害任何动物。
你可以使用@echo(@echo + [空间] + [空间] insecable)
注:insecable空间可以得到与ALT + 0160
希望它帮助:)
[编辑]嗯,你是正确的,我需要它在一个makefile,在那里它完美。我想我的答案是不适应的批处理文件。我的浴室。
- 我得到的ECHO ist eingeschaltet (ON).不是空行,在命令提示下尝试过。
- 这是不间断的空间,不是换行。
(P)I can't make i t any simpler than:(p)字母名称
(P)The most character conservative way to accomplish this in Linux systems,is with the EDOCX1 universal 11 alias-which interprets escaped characters that are backslashed.(p)字母名称(P)这里是其他的例子(p)
- 但问题不在于Linux和bash。关于Windows批量
- TouCh@杰布。也许我应该更熟悉窗户。很惊讶它为什么把我带到这里。