Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Formatting 如何在MS-DOS脚本中打印换行符?_Formatting_Batch File_Newline_Dos - Fatal编程技术网

Formatting 如何在MS-DOS脚本中打印换行符?

Formatting 如何在MS-DOS脚本中打印换行符?,formatting,batch-file,newline,dos,Formatting,Batch File,Newline,Dos,我想用MS-DOS打印程序的输出,所以我写了一个.bat文件,上面写着: cls ruby foo.rb 但输出(如我的命令提示符所示)如下所示: c:\workspace>ruby foo.rb foo output c:\workspace> @ECHO OFF cls echo. ruby foo.rb 我想使用MS-DOS在输出中插入一个换行符,因为我不想用任何与代码应该做什么无关的东西污染我的Ruby代码 MS-DOS中唯一看起来像我想要的命令是“type”和“pri

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

cls
ruby foo.rb
但输出(如我的命令提示符所示)如下所示:

c:\workspace>ruby foo.rb
foo output
c:\workspace>
@ECHO OFF
cls
echo.
ruby foo.rb
我想使用MS-DOS在输出中插入一个换行符,因为我不想用任何与代码应该做什么无关的东西污染我的Ruby代码

MS-DOS中唯一看起来像我想要的命令是“type”和“print”,但这两个命令都用于打印文件

我试着创建一个包含两个空行的文本文件,并使用“type”命令输出它,但它看起来很混乱

任何想法都将不胜感激。

试试这个

echo.

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

echo.

echo.
将产生一个新行

因此,您的脚本应该如下所示:

c:\workspace>ruby foo.rb
foo output
c:\workspace>
@ECHO OFF
cls
echo.
ruby foo.rb

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

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

将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.
那么:

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

再见

即使这里有4个答案使用相同的提示。ECHO.,它也不是最好的解决方案

有两个缺点

  • 它很慢

    ECHO.
    比正常的
    ECHO
    命令慢约10倍,这是因为
    ECHO.
    将强制磁盘访问

  • 它可能会失败
    如果存在名为
    ECHO
    (不带扩展名)的文件,则每个
    ECHO.
    命令将导致文件未找到错误,而不是回显空行

  • 那你能做什么呢?
    对于一个简单的空行,有许多工作方式

    echo+
    echo=
    echo;
    echo,
    echo:
    echo(
    
    但是,有时您需要一种安全的方法来回送变量的内容,即使该变量为空或包含诸如
    /?
    \\..\windows\system32\calc.exe等奇数内容

    ECHO%变量%

    echo=/?
    echo;/?
    echo,/?
    echo:\\..\..\windows\system32\calc.exe
    
    然后most命令将失败,只有
    ECHO(
    在任何情况下都有效。
    它看起来有点奇怪,但它可以工作,并且不需要也不需要在右括号中设置任何问题。

    我同意jeb的观点。“echo”(“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”文件

    在我的系统上,由于正在进行文件访问,使用“echo.”方法从开始到结束大约需要0.05秒

    现在,将上面测试文件中的所有“echo.”替换为“echo”(),然后再次运行它

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

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

    没有错误消息


    QED

    你救了我一命。谢谢。最后一行不会回显空行。它回显“开”或“关”取决于第一行设置的状态。要获得空行,你必须
    回显。
    正如其他人指出的那样。“
    回显。
    将强制磁盘访问”真的吗?标准问题是。@PeterMortensen尽管标题相似,但这是一个不同的问题。这个问题问如何输出一个空行。你链接的问题问如何在各自的行上输出两个单词。