【发布时间】:2010-12-15 19:53:44
【问题描述】:
是否可以在批处理文件的回显行中添加换行符?
基本上我希望能够做到以下几点:
echo Hello\nWorld
在 Linux 中你可以很容易地做到这一点,但我不知道如何在 Windows 中做到这一点。
【问题讨论】:
-
啊哈哈,是的,几乎和我找到的答案一样
标签: windows batch-file
是否可以在批处理文件的回显行中添加换行符?
基本上我希望能够做到以下几点:
echo Hello\nWorld
在 Linux 中你可以很容易地做到这一点,但我不知道如何在 Windows 中做到这一点。
【问题讨论】:
标签: windows batch-file
我认为这是不可能的。您只能对此尝试使用 ascii 字符: http://www.asciitable.com/ 但这可能会使您的批处理文件崩溃。
【讨论】:
哈哈哈,
我想我已经找到了足够接近的东西......
echo hello&echo.&echo world
生产:
你好
世界
【讨论】:
经过一些实验后,我发现无需发出两个单独的回显命令就可以做到这一点,如How can you echo a newline in batch files? 中所述。但是,要使其正常工作,您需要一个不会将 CR 转换为 CR+LF 的文本编辑器。
类型:
@echo First Line
然后在打开 NumLock 的情况下,按住 ALT 键并在数字小键盘上输入 10,然后再释放 ALT(您必须使用数字小键盘,而不是顶行的数字键)。这将插入一个 CR 字符。然后输入第二行。根据您的编辑器以及与 CR+LF 相比它处理 CR 的方式,您可能会得到:
@echo First Line◙Second Line
或
@echo First Line
Second Line
只要文本编辑器不将 CR 转换为 CR+LF(Windows/DOS 编辑器会这样做,除非您将它们配置为不这样做),这可以从命令行运行,并且可以在批处理文件中运行。如果 CR 转换为 CR+LF,或者如果您只使用 LF,则第二行将被解释为新命令。
但是,我不明白为什么这比简单的更可取:
@echo First Line
@echo Second Line
【讨论】:
I remain bemused regarding why anyone would want to do this - 我有时使用它来使 %PATH% 变量易于阅读:echo %path:;=◙%
echo. 打印一个空行。
例子:
echo Hello
echo.
echo world
打印
Hello
world
【讨论】:
echo. 比 echo( 慢约 20 倍,当存在名称为 echo 且没有扩展名的文件时,它完全失败。所以echo(更安全更快
echo( 在 DOS 6.22 中不起作用。 (尽管目前这可能是最少的受众。)
echo[ 呢?
echo[,但由于它也失败了一个名为echo[.bat的文件,它应该和echo.一样慢关于ECHO. FAILS to give text or blank line的回声变化的信息
我发现这非常有用,因此想使用提供的答案发布一个更好的示例
这提供了格式良好的使用信息
if "%1" == """" goto usage
:usage
echo USAGE: %0 [Set properties using -D flag] [Ant Task to Run] &
echo. &
echo Availble Command line properties &
echo -------------------------------- &
...
【讨论】:
一个回声就可以解决。
为此,您需要一个换行符 \n。
有多种方法可以在 echo 中添加新行
1) 此示例使用多行插入符号在命令中添加换行符,
空行是必需的
echo Hello^
world
2) 下一个解决方案首先创建一个包含一个换行符的变量。
set \n=^
rem ** Two empty lines are required
或者用稍微修改的版本创建新行
(set \n=^
%=DONT REMOVE THIS=%
)
并将此字符与延迟扩展
一起使用setlocal EnableDelayedExpansion
echo Hello!\n!world
要使用带有百分比扩展的换行符,您需要创建一个更复杂的序列
echo Hello^%\n%%\n%world
或者您可以使用New line hack
REM Creating a Newline variable (the two blank lines are required!)
set \n=^
set NL=^^^%\n%%\n%^%\n%%\n%
REM Example Usage:
echo There should be a newline%NL%inserted here.
但只有换行符的延迟扩展才可靠,引号内也是如此。
【讨论】:
^) 在 MS-DOS 中不起作用,至少在 FreeDOS 中不起作用。似乎需要单独的 echo 命令,每行一个。
\r 分配给变量?
回声。 要么 回声(
将做空白的新行。希望这会有所帮助。
【讨论】: