2009-02-23 14 views
5

Chcę wydrukować dane wyjściowe programu w MS-DOS więc napisałem plik bat który mówi:Jak wydrukować znak nowej linii w skrypcie MS-DOS?

cls 
ruby foo.rb 

ale wyjście - jak wydaje się na moim wiersza polecenia - wygląda tak:

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

Chciałem wstawić znak nowej linii do wyjścia za pomocą MS-DOS, ponieważ nie chcę zanieczyszczać mojego kodu Ruby za pomocą niczego niezwiązanego z tym, co kod powinien robić.

Jedynymi poleceniami w systemie MS-DOS, które wyglądają tak, jak chcę, są "typ" i "drukuj", ale obie są przeznaczone do drukowania plików.

Próbowałem utworzyć plik tekstowy z dwoma pustymi liniami i wypisać go za pomocą polecenia "typ", ale wygląda na brudny.

Wszelkie pomysły będą mile widziane.

+0

pytanie kanoniczna jest * (http.. [Jak można echa nowego wiersza w plikach wsadowych?]://stackoverflow.com/questions/132799/how-can-you-echo-a-newline-in-batch-file s) *. –

+0

@PeterMortensen Pomimo podobieństwa tytułów, to inne pytanie. Pytanie to pyta, jak wypisać pustą linię.Pytanie, które łączysz, prosi o wypisanie dwóch słów w osobnych liniach. –

Odpowiedz

24

echo. będzie produkować nową linię.

Więc skrypt powinien wyglądać mniej więcej tak:

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

Uratowałeś mnie przed pewną śmiercią. Dziękuję Ci. –

+0

Użyj echo ([zamiast] (http://stackoverflow.com/a/3123194/209129) –

3

Spróbuj

echo. 
2

Użyj polecenia echo zakończoną kropką, aby wyświetlić nową linię w pliku wsadowym MS-DOS:

echo. 
0

nie jestem jasne, co chcesz tutaj, ale może to pomoże.

Jeśli chcesz, aby dane wyjściowe wysyłane były gdzie indziej, użyj wyjścia "rura".

ruby foo.rb > out.txt 

wyprowadza wyjście polecenia ruby ​​do pliku out.txt.

Jeśli chcesz kontrolować wyjście, użyj 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

Ten ostatni nie wyświetla pustego wiersza, ale jest on "włączony" lub "wyłączony" w zależności od stanu określonego przez pierwszy Aby uzyskać pustą linię, musisz "echo", jak wskazali inni: – beltorak

4

jak about:

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

bye

+0

Aww, StingJack był pierwszy :) –

+0

że upvote jest za próbowanie ... 80) – Keng

+0

ha! dziękuję =) –

4

Nawet jeśli tu są 4 odpowiedzi z taką samą końcówką używać ECHO., to nie jest najlepsze rozwiązanie!

Istnieją dwie wady.

  1. To powolny
    ECHO. jest ~ 10 razy wolniej niż normalnyecho polecenia , to dlatego ECHO. wymusi dostęp do dysku

  2. Może uda
    Jeśli plik o takiej nazwie ECHO (bez rozszerzenia), wtedy każde polecenie ECHO. spowoduje, że nie zostanie znaleziony plik , zamiast echo pustej linii.

Ale co można wtedy zrobić?
Dla prostej pustej linii istnieje wiele sposobów działania.

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

Ale czasami chcesz bezpieczny sposób echo zawartość zmiennej nawet jeśli zmienna jest pusta lub zawiera treści dziwne jak /? lub \\..\..\windows\system32\calc.exe.

ECHO<character>%variable%

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

Wtedy większość poleceń nie powiedzie, tylko ECHO( działa w każdej sytuacji.
Wygląda to trochę dziwnie, ale działa i nie jest potrzebne ani nie sprawia kłopotu z nawiasem zamykającym.

+0

"" ECHO "wymusi dostęp do dysku" naprawdę? – npostavs

1

Zgadzam się z Jeb. "echo (" jest zdecydowanie szybsze i nie wywołuje dostępu do pliku, po prostu spróbuj, a sam się o tym przekonasz, oto mały test, który możesz chcieć wypróbować:

Utwórz plik o nazwie "echo" i w tym samym katalogu utworzyć TEST.BAT lub test.cmd plik ma następującą treść w skrypcie.?

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

Run nowo utworzony plik wsadowy Czego dostać kilka komunikatów o błędach, gdy plik " echo”istnieje w tym samym katalogu.

teraz usunąć plik "Echo".

W moim systemie trwało to około 0,05 sekundy od początku do końca, używając metody "echo" z powodu dostępu do pliku.

Teraz zamień wszystkie "echo". w pliku testowego powyżej z „echo (” i uruchomić go ponownie.

trwa około 0,01 sekundy od początku do końca za pomocą „echo (” oświadczenie.

Końcowe testy, przywrócić plik o nazwie „echo "w tym samym katalogu i uruchomić partia po raz ostatni

żadne komunikaty o błędach

QED

Powiązane problemy