7

我想在 MS-DOS 中打印程序的输出,所以我写了一个 .bat 文件,上面写着:

cls
ruby foo.rb

但是输出 - 出现在我的命令提示符上 - 看起来像这样:

c:\workspace>ruby foo.rb
foo output
c:\workspace>

我想使用 MS-DOS 在输出中插入换行符,因为我不想用与代码应该做什么无关的任何东西污染我的 Ruby 代码。

MS-DOS 中唯一看起来像我想要的命令是“类型”和“打印”,但它们都是用于打印文件的。

我尝试创建一个带有两个空行的文本文件并使用“type”命令输出它,但它看起来很乱。

任何想法,将不胜感激。

4

7 回答 7

26

echo.将产生一条新线。

所以你的脚本应该是这样的:

@ECHO OFF
cls
echo.
ruby foo.rb
于 2009-02-23T16:37:13.893 回答
6

即使这里有 4 个使用相同技巧的答案ECHO.,这也不是最好的解决方案!

有两个缺点。

  1. 它的
    ECHO.速度比普通 echo命令慢约 10 倍,这是因为ECHO.会强制访问磁盘

  2. 它可能会失败
    如果存在具有名称ECHO(没有扩展名)ECHO.的文件,那么每个命令将导致找不到文件错误,而不是回显一个空行。

但是你能做什么呢?
对于一个简单的空行,有很多工作方式。

echo+
echo=
echo;
echo,
echo:
echo(

但有时您需要一种安全的方式来回显变量的内容,即使变量为空或包含奇怪的内容,例如/?or \\..\..\windows\system32\calc.exe

ECHO<character>%variable%

echo=/?
echo;/?
echo,/?
echo:\\..\..\windows\system32\calc.exe

然后大多数命令将失败,仅ECHO(适用于任何情况。
它看起来有点奇怪,但它可以工作,并且不需要右括号也不会造成任何麻烦。

于 2012-04-16T12:38:50.813 回答
4

怎么样:

@echo off
cls
echo.
ruby foo.rb
echo.

再见

于 2009-02-23T16:42:52.227 回答
3

试试这个

echo.
于 2009-02-23T16:35:55.690 回答
2

使用后跟句点的 echo 命令在 MS-DOS 批处理文件中显示新行:

echo.
于 2009-02-23T16:36:09.997 回答
1

我同意杰布。"echo(" 肯定更快,并且不会调用文件访问。只需尝试一下,您就会知道。这是您可能想尝试的一个小测试。

创建一个名为“echo”的文件,并在同一目录下创建一个 test.bat 或 test.cmd 文件,脚本中包含以下内容:

@echo off
echo %time%
echo.
echo Hello, World
echo.
echo.
echo What time is it?
echo.
echo It's Miller Time!
echo.
echo.
echo CHEERS!
echo.
echo %time%

运行新创建的批处理文件。你得到了什么?当同一目录中存在文件“echo”时出现一堆错误消息。

现在,删除“echo”文件。

在我的系统上,使用“回声”从开始到结束大约需要 0.05 秒。方法由于文件访问发生。

现在,替换所有“回声”。在上面的测试文件中使用“echo(”并再次运行它。

使用“echo(”语句从开始到结束大约需要 0.01 秒。

最终测试,在同一目录中重新引入一个名为“echo”的文件并最后一次运行批处理。

没有错误信息。

量子点

于 2013-12-03T17:53:00.557 回答
0

我不清楚你在这里想要什么,但也许这会有所帮助。

如果要将输出发送到其他地方,请使用 dos 输出“管道”。

ruby foo.rb > out.txt

将 ruby​​ 命令的输出输出到 out.txt 文件。

如果要控制输出,请使用 ECHO。

@ECHO OFF/ON //turns off/on command output
ECHO "Blah" //writes "Blah" to the console.
ECHO. //writes a blank line to the console.
于 2009-02-23T16:40:18.753 回答