Как вставить новую строку в команду cmd.exe?

65551
rudimenter

Я пытаюсь выполнить команду cmd.exeс разрывом строки или новой строкой в ​​составе команды, как показано ниже:

command -option:text  whatever 

Но каждая новая строка выполняет команду, а не продолжает команду на следующей строке.

Итак, как мне ввести символ новой строки или создать многострочную команду в cmd.exe?

16
Возможный дубликат [Как сделать одну команду командной строки на нескольких строках в Windows?] (Https://superuser.com/questions/187410/how-do-i-do-single-command-line-command-on- несколько линий-в-окна) phuclv 5 лет назад 0
[Длинные команды разделены на несколько строк в пакетном (.bat) файле Windows Vista] (https://stackoverflow.com/q/69068/995714) phuclv 5 лет назад 0

5 ответов на вопрос

15
Darth Android

Используйте ^персонажа как побег:

command -option:text^

whatever

Я предполагаю, что вы используете cmd.exe из Windows XP или аналогичный. Это не фактический DOS. Если вы используете настоящую DOS (MS-DOS, Win3.1, Win95, Win98, WinME), то я не верю, что есть выход для перевода строки. Вам нужно будет запустить собственную оболочку. cmd.exe предложит вам "More?" каждый раз, когда вы нажимаете ввод с ^конца в конце строки, просто нажмите ввод еще раз, чтобы фактически выйти / вставить новую строку.

Слишком круто, я этого не знал. T.J. Crowder 13 лет назад 0
Это то, что вы предлагаете, это позволяет мне вводить больше текста на новой строке. Это не сохраняет символ новой строки. То, что я хочу, это то, что между «текст» и «что угодно» является новой строкой. Как-то так: "текст \ nотчем" rudimenter 13 лет назад 1
Я полагаю, что вы должны использовать две строки для этого, мой плохой, потому что я не понял этого в моем оригинальном сообщении (сейчас отредактировано) Darth Android 13 лет назад 0
@TJ Crowder Я знаю, я тоже не знал, пока не нашел другой вопрос здесь несколько дней назад. Darth Android 13 лет назад 0
Следует отметить, что если в тексте есть пробелы, вам нужно будет заключить их в кавычки. Кроме того, убедитесь, что вы включили заключительную кавычку, в противном случае символ каретки будет игнорироваться как escape-символ и обрабатываться как текст. Наконец, вам нужно будет помещать кавычки вокруг текста в каждой строке, содержащей пробелы (делайте это, даже если он не содержит пробелов, чтобы быть в безопасности), и ставить каркас после закрывающей кавычки для каждой строки, которая продолжается. Synetech 13 лет назад 1
Я закончил здесь, пытаясь найти способ поставить новые строки в комментариях команды `SHUTDOWN.EXE`. В итоге я использовал что-то вроде этого: `shutdown -s -t 900 -c" foo bar "^` **> More? ** `" baz "^` **> More? ** `" проверить это. "` Это сработало. Synetech 13 лет назад 0
К сожалению, кажется, нет никакого способа включить символ новой строки внутри строки в кавычках. Ian Goldby 11 лет назад 0
2
Amit Naidu

Используйте Alt коды с цифровой клавиатурой

C:\>ver  Microsoft Windows [Version 6.3.9600]  C:\>echo Line1◙Line2 >con Line1 Line2  C:\> 

Этот символ перевода строки может быть введен как код Alt в CLI, используя цифровую клавиатуру: при включенной NumLock, удерживайте нажатой клавишу ALT и введите 10 на цифровой клавиатуре, прежде чем отпустить клавишу ALT. Если вам также нужен CR, наберите их оба с помощью Alt + 13, а затем Alt + 10:♪◙

Примечание: это не будет работать в пакетном файле.

Пример использования:

Вы пытаетесь прочитать переменные среды% PATH% или% CLASSPATH%, чтобы получить быстрый обзор того, что там и в каком порядке, но pathвозвращаемая стенка текста не читается. Тогда это то, что вы можете быстро набрать:

echo %path:;=◙% >con 

Редактировать:

Добавлен >conобходной путь, который Брент Риттенхаус обнаружил для более новых версий cmd.exe, где оригинальный метод перестал работать.

Это не похоже на работу для меня. В итоге я получил `e2 99 aa e2 97 99`. Какой-то код Unicode? Хотя я вижу, что символы вводятся в командной строке. Какие-либо предложения? Brad 5 лет назад 0
@Brad Я могу подтвердить, что он больше не работает в новом cmd.exe в Windows 10, и даже мой старый Windows 7 больше не будет так себя вести. Amit Naidu 5 лет назад 0
Weird! Интересно, могу ли я откопать старый cmd.exe из чего-то .... Brad 5 лет назад 0
@Brad, я только что попробовал несколько вещей и понял, что вы можете получить это старое поведение, если переключитесь на растровые шрифты в свойствах консоли вместо шрифтов Lucida и True Type и установите флажок «Использовать устаревшую консоль». Но это выглядит очень плохо на мониторе с высоким разрешением. Amit Naidu 5 лет назад 0
Ух ты! Weird. Кто-то только что прокомментировал, что в powershell я могу использовать backtick-r-backtick-n, который работает. Brad 5 лет назад 0
Самое сумасшедшее в этом - то, что если у вас есть: а) использовать устаревшую консоль и б) растровые шрифты, как указано, они будут работать, а затем, если вы переключите шрифт на консоль Lucida (или как она там называется), он переключится, и вы увидите текст все еще с новой строкой, но если вы попробуете это сейчас, это не сработает. Даже если вы скопируете строку, которую вы ПРОСТО ПРОИЗОШЛИ, и заново вставите ее (я подумал, что это может быть кодовая страница другой сети или что-то в этом роде), она ЕЩЕ НЕ будет работать. Пример: https://i.imgur.com/kKX2jiy.png Brent Rittenhouse 5 лет назад 0
На самом деле, я думаю, что я нашел решение, которое работает для этого полностью в любом шрифте! Если вы просто отобразите строку с символами alt-10, а затем перенаправите ее на CON, она будет работать! Например: `(echo Обнаружена новая строка rigghhhtt ◙ ^ <--- ЗДЕСЬ!)> CON` Круглые скобки являются необязательными. Вот более надежный пример того, что вы можете сделать с этим (возврат каретки, который теперь работает и совершенно независимо!): Https://i.imgur.com/qqN37PH.png Brent Rittenhouse 5 лет назад 1
@BrentRittenhouse Wow, красиво сделано! Я проверил это с моим `path` эхом, и теперь он прекрасно работает. Я давно это пропустил, так что спасибо! `echo% path:; = ◙%> con`. @Brad, возглавляй. Amit Naidu 5 лет назад 0
1
grawity

Я считаю, что вы не можете сделать это из cmd.exeоболочки Windows . ( Это не DOS. )


Вам не нужна полная «кастомная оболочка» для этого. Вам нужно всего лишь написать что-то вроде этого (пример на Python ):

import subprocess subprocess.call(["C:\\bin\\sometool.exe", "test\nwith\nnewlines"]) 

Или рубин

Kernel::exec "C:\\bin\\sometool.exe", "test\nwith\nnewlines" 

Видите, это не так сложно.

1
Haydar

Я не знаю, сработает ли это для вас, но поставив & echo (важно следующее пространство). между каждым оператором, который вы хотите в новой строке. Я только попробовал это с простым файлом летучей мыши

echo %1 

Затем сохранил это как testNewLines.bat

Итак, линия CMD

testNewLines first line&echo Second Line&echo Third line 

Результатом стало следующее возвращение

первая строка
вторая строка
третья строка

1
Brent Rittenhouse

Расширяя ответ Амита ( https://superuser.com/a/1132659/955256 ), я нашел способ сделать это любым шрифтом БЕЗ использования устаревшей консоли.

Все, что вам нужно сделать, это просто отобразить строку с символами alt-10, а затем перенаправить на нее, conи она будет работать!

Например, учитывая:

(эхо Обнаружена новая строка rigghhhtt ◙ ^ <--- ЗДЕСЬ!)> CON

редактировать: забавный факт, кажется, что вы можете поместить перенаправление в начале, например, так:

> CON echo Обнаружена новая строка rigghhhtt ◙ ^ <--- ЗДЕСЬ!

Странно, а?

Вы получите вывод:


New-line detected rigghhhtt  <-- HERE! 

(Круглые скобки являются необязательными.)

Вот более надежный пример того, что вы можете сделать с этим возвратом каретки AND, которые теперь работают и совершенно независимо !:

Лучше всего, это работает, если вы также перенаправляете в файл!
(просто измените > CONна> desired_output_file.txt

Наслаждайтесь!