3

Я перенаправляю вывод командного файла в текстовый файл и не хочу пустых строк между каждой командой. Я понимаю, что мог бы постобработать с однострочным перл, но не хотел бы. Есть ли вариант где-то подавить эти ненужные пустые строки?

2 ответа2

3

cmd всегда выводит новую строку, прежде чем выводит подсказку. Это означает, что что-то вроде

> echo foo
foo

> _

всегда будет иметь эту пустую строку, так как echo печатает разрыв строки автоматически. Тем не менее, что-то вроде

> set /p x=foo<nul
foo
> _

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

Предположительно, это делается для того, чтобы подсказка всегда была в начале строки, независимо от того, насколько запутан вывод последней команды. В UNIX-подобных случаях ваш запрос обычно находится в середине строки, поскольку последняя команда не выводила символ новой строки.

Но, похоже, нет способа предотвратить его поведение.

Вы можете легко передать все, что вы там делаете через

findstr /r /v /c:"^$"

хоть.

0

Это действительно зависит от команд, которые вы запускаете, так как они могут быть настроены на это после того, как они выполняются - вы бы хотели увидеть, если у них есть не многословная опция (однако, я сомневаюсь, что это поможет).

Другая вещь, которую стоит попробовать, это поместить в начало:

@ Эхо выключено

К сожалению, я не думаю, что вам повезет, так как я думаю, что все команды ставят разрыв строки после их завершения (это то, что возвращает / вызывает командную строку после завершения.

Лучше всего будет использовать инструмент постобработки и просто удалить разрывы строк, но я не знаю хорошего, чтобы рекомендовать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .