Я перенаправляю вывод командного файла в текстовый файл и не хочу пустых строк между каждой командой. Я понимаю, что мог бы постобработать с однострочным перл, но не хотел бы. Есть ли вариант где-то подавить эти ненужные пустые строки?
2 ответа
cmd
всегда выводит новую строку, прежде чем выводит подсказку. Это означает, что что-то вроде
> echo foo
foo
> _
всегда будет иметь эту пустую строку, так как echo
печатает разрыв строки автоматически. Тем не менее, что-то вроде
> set /p x=foo<nul
foo
> _
не будет пустой строки между ними, так как выше - уловка, которая позволяет печатать материал без разрывов задней строки. Тем не менее, приглашение появляется в начале следующей строки.
Предположительно, это делается для того, чтобы подсказка всегда была в начале строки, независимо от того, насколько запутан вывод последней команды. В UNIX-подобных случаях ваш запрос обычно находится в середине строки, поскольку последняя команда не выводила символ новой строки.
Но, похоже, нет способа предотвратить его поведение.
Вы можете легко передать все, что вы там делаете через
findstr /r /v /c:"^$"
хоть.
Это действительно зависит от команд, которые вы запускаете, так как они могут быть настроены на это после того, как они выполняются - вы бы хотели увидеть, если у них есть не многословная опция (однако, я сомневаюсь, что это поможет).
Другая вещь, которую стоит попробовать, это поместить в начало:
@ Эхо выключено
К сожалению, я не думаю, что вам повезет, так как я думаю, что все команды ставят разрыв строки после их завершения (это то, что возвращает / вызывает командную строку после завершения.
Лучше всего будет использовать инструмент постобработки и просто удалить разрывы строк, но я не знаю хорошего, чтобы рекомендовать.