2009-02-23 15 views
5

ich die Ausgabe eines Programms in MS-DOS, so schrieb ich eine .bat Datei drucken möchten, das sagt:Wie wird ein Zeilenumbruch in einem MS-DOS-Skript gedruckt?

cls 
ruby foo.rb 

Aber der Ausgang - wie es auf meinem Eingabeaufforderung angezeigt wird - sieht wie folgt aus:

Ich wollte einen Zeilenumbruch in die Ausgabe mit MS-DOS einfügen, weil ich meinen Ruby-Code nicht mit etwas verseuchen möchte, das nicht mit dem zusammenhängt, was der Code tun soll.

Die einzigen Befehle in MS-DOS, die aussehen wie ich will, sind "Typ" und "Drucken", aber beide sind zum Drucken von Dateien.

Ich habe versucht, eine Textdatei mit zwei Leerzeilen zu erstellen und sie mit dem Befehl 'type' auszugeben, aber es sieht chaotisch aus.

Irgendwelche Ideen würden geschätzt.

+0

die kanonische Frage ist * (http.. [Wie können Sie eine neue Zeile in Batch-Dateien echo?]://stackoverflow.com/questions/132799/how-can-you-echo-a-newline-in-batch-file s) *. –

+0

@PeterMortensen Trotz der Ähnlichkeit der Titel ist das eine andere Frage. Diese Frage fragt, wie eine Leerzeile ausgegeben wird.Die Frage, die Sie verknüpft haben, fragt, wie Sie jeweils zwei Wörter in einer eigenen Zeile ausgeben können. –

Antwort

24

echo. eine neue Linie produzieren.

So sollte Ihr Skript wie folgt aussehen:

@ECHO OFF 
cls 
echo. 
ruby foo.rb 
+2

Du hast mich vor dem sicheren Tod gerettet. Vielen Dank. –

+0

Verwenden Sie echo ([stattdessen] (http://StackOverflow.com/a/3123194/209129) –

3

Versuchen Sie, diese

echo. 
2

den Echo-Befehl gefolgt von einem Punkt Verwenden Sie in einer MS-DOS-Batch-Datei eine neue Zeile angezeigt werden:

echo. 
0

ich nicht klar bin, was Sie hier wollen, aber vielleicht wird dies dazu beitragen.

Wenn die Ausgabe an einen anderen Ort gesendet werden soll, verwenden Sie den DOS-Ausgang "pipe".

ruby foo.rb > out.txt 

wird die Ausgabe des Befehls ruby ​​in der out.txt-Datei ausgeben.

Wenn Sie den Ausgang steuern möchten, verwenden Sie ECHO.

@ECHO OFF/ON //turns off/on command output 
ECHO "Blah" //writes "Blah" to the console. 
ECHO. //writes a blank line to the console. 
+1

Das letzte echo ist nicht eine leere Zeile echo "on" oder "off" abhängig von dem Zustand von der ersten festgelegt Um eine Leerzeile zu bekommen, musst du 'echo.' wie andere darauf hingewiesen haben. – beltorak

4

wie etwa:

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

bye

+0

oh, StingJack kam zuerst :) –

+0

das upvote ist für den Versuch ... 80) – Keng

+0

ha! danke =) –

4

Auch hier, wenn sie 4 Antworten mit der gleichen Spitze ECHO. zu verwenden, ist es nicht die beste Lösung!

Es gibt zwei Nachteile.

  1. Es ist langsam
    ECHO. ist ~ 10-mal langsamer als ein normalerecho Befehl, das ist, weil ECHO.

  2. einen Plattenzugriff zwingen wird es
    fehlschlagen kann, wenn eine Datei mit dem Namen existiert ECHO (ohne Erweiterung) dann wird jeder ECHO. Befehl in einer Datei nicht gefunden Fehler statt statt einer leeren Zeile echo.

Aber was können Sie dann tun?
Für eine einfache leere Zeile gibt es viele Arbeitsweisen.

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

Aber manchmal will man einen sicheren Weg, um den Inhalt einer Variablen, auch wenn die Variable leer oder enthält ungerade Inhalte wie /? oder \\..\..\windows\system32\calc.exe Echo.

ECHO<character>%variable%

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

Dann werden die meisten Befehle, nur ECHO( Arbeiten in jeder Situation scheitern.
Es sieht ein bisschen seltsam aus, aber es funktioniert und es braucht keine Probleme mit einer schließenden Klammer.

+0

"'ECHO.wird einen Festplattenzugriff" wirklich zwingen? – npostavs

1

Ich stimme mit jeb überein. "echo (" ist definitiv schneller und ruft keinen Dateizugriff auf. Versuchen Sie es einfach und Sie werden es selbst wissen. Hier ist ein kleiner Test, den Sie ausprobieren möchten.

Erstellen Sie eine Datei namens "echo" und im selben Verzeichnis eine test.bat oder test.cmd-Datei mit folgendem Inhalt im Skript erstellen.?

@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% 

Führen Sie die neu Batch-Datei erstellt Was bekommen Sie eine Reihe von Fehlermeldungen, wenn eine Datei " echo“im gleichen Verzeichnis vorhanden ist.

Nun löschen Sie die "Echo" Datei.

Auf meinem System dauerte es ca. 0,05 Sekunden von Anfang bis Ende mit der "Echo." - Methode, da der Dateizugriff stattfand.

Ersetzen Sie jetzt alle "Echo". in der Testdatei oben mit „echo (“ und sie wieder läuft.

dauert es ca. 0,01 Sekunden vom Start mit dem „Echo (“ statement zu beenden.

Endtest, wieder einzuführen eine Datei namens „Echo "im gleichen Verzeichnis und starten Sie das Batch ein letztes Mal

keine Fehlermeldungen

QED

Verwandte Themen