Как напечатать новую строку в сценарии MS-DOS?

Я хочу распечатать вывод программы в MS-DOS, поэтому я написал файл .bat, в котором говорится:

cls
ruby foo.rb

Но вывод - как он появляется в моей командной строке - выглядит так:

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

Я хотел вставить новую строку в вывод с помощью MS-DOS, потому что я не хочу загрязнять свой код Ruby чем-либо, не связанным с тем, что код должен делать.

Единственные команды в MS-DOS, которые выглядят так, как я хочу, - это «тип» и «печать», но обе они предназначены для печати файлов.

Я попытался создать текстовый файл с двумя пустыми строками и вывести его с помощью команды 'type', но это выглядит беспорядочно.

Любые идеи поощряются.

Ответов (7)

Решение

echo. произведет новую линию.

Итак, ваш сценарий должен выглядеть примерно так:

@ECHO OFF
cls
echo.
ruby foo.rb

как насчет:

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

до свидания

Даже если есть 4 варианта ответа с одним и тем же советом ECHO., это не лучшее решение!

Есть два недостатка.

  1. Это медленно
    ECHO., примерно в 10 раз медленнее, чем обычная echo команда, потому что ECHO.будет принудительно доступ к диску.

  2. Это может привести к сбою.
    Если файл с таким именем ECHO(без расширения) существует, то каждая ECHO.команда приведет к ошибке файл не найден , а не к отображению пустой строки.

Но что тогда делать?
Для простой пустой строки есть много способов.

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

Но иногда вам нужен безопасный способ отобразить содержимое переменной, даже если переменная пуста или содержит нечетное содержимое, например /? или \\..\..\windows\system32\calc.exe .

ECHO<character>%variable%

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

Тогда большинство команд не сработает, ECHO( работает только в любой ситуации.
Это выглядит немного странно, но работает и не требует никаких проблем с закрывающей скобкой.

Я согласен с jeb. "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 (».

Заключительный тест, повторно введите файл с именем "echo" в том же каталоге и запустите пакет в последний раз.

Сообщения об ошибках отсутствуют.

QED

Попробуй это

echo.

Используйте команду echo, за которой следует точка, чтобы отобразить новую строку в пакетном файле MS-DOS:

echo.

Я не понимаю, что вам здесь нужно, но, возможно, это поможет.

Если вы хотите, чтобы вывод отправлялся куда-то еще, используйте «канал» вывода 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.