Как напечатать новую строку в сценарии 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)7
Даже если есть 4 варианта ответа с одним и тем же советом ECHO.
, это не лучшее решение!
Есть два недостатка.
Это медленно
ECHO.
, примерно в 10 раз медленнее, чем обычнаяecho
команда, потому чтоECHO.
будет принудительно доступ к диску.Это может привести к сбою.
Если файл с таким именем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
Я не понимаю, что вам здесь нужно, но, возможно, это поможет.
Если вы хотите, чтобы вывод отправлялся куда-то еще, используйте «канал» вывода 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.