Як я можу вставити новий рядок у команду cmd.exe?


23

Я намагаюся виконати команду на cmd.exe, з розривом рядка або новим рядком як частиною команди, як нижче:

command -option:text  
whatever

Але кожен новий рядок виконує команду, замість того, щоб продовжувати команду в наступному рядку.

Тож як я можу ввести новий символ рядка або створити багаторядкову команду в cmd.exe?



Відповіді:


19

Використовуйте ^символ як біг:

command -option:text^

whatever

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


Надто круто, я цього не знав.
TJ Crowder

1
Це, що ви пропонуєте, дозволяє мені ввести більше тексту в новий рядок. Це не зберігає новий рядок. Що я хочу, це те, що між "текстом" і "тим, що" є новим рядком. Що - щось на зразок цього: "текст \ nwhatever"
rudimenter

Я вважаю, що вам доведеться скористатися двома новими рядками, для мене це погано, якщо я не усвідомив цього в своєму первісному дописі (зараз відредагований)
Darth Android

1
Слід зазначити, що якщо у вас є пробіли в тексті, вам потрібно буде загортати їх у лапки. Крім того, переконайтеся, що ви включили кінцеву цитату, інакше карета буде проігнорована як символ втечі та буде розглядатися як текст. Нарешті, вам потрібно буде поставити лапки навколо тексту в кожному рядку, що містить пробіли (зробіть це навіть у тому випадку, якщо він не містить пробілів, щоб бути безпечним), а після завершення цитати кожного рядка, який продовжується, поставити застереження.
Synetech

1
Я закінчився тут, намагаючись знайти спосіб ввести нові рядки у коментарях SHUTDOWN.EXEкоманди. Я в кінцевому підсумку використовував щось подібне: shutdown -s -t 900 -c "foo bar"^ > Більше? "baz"^ > Більше? "test that."Це спрацювало.
Synetech

4

Використовуйте коди Alt за допомогою цифрової панелі

C:\>ver

Microsoft Windows [Version 6.3.9600]

C:\>echo Line1◙Line2 >con
Line1
Line2

C:\>

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

Примітка: це не працюватиме у пакетному файлі.

Випадок використання зразка:

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

echo %path:;=◙% >con

Редагувати:

Додано >conвирішення, яке Brent Rittenhouse виявив для нових версій cmd.exe, де оригінальний метод перестав працювати.


Це, здається, не працює для мене. Я закінчую e2 99 aa e2 97 99передачею. Якийсь код коду Unicode? Я бачу, як символи заходять у командному рядку, хоча. Будь-які пропозиції?
Бред

@Brad Я можу підтвердити, що, схоже, він не працює більше у новому cmd.exe в Windows 10, і навіть моя стара версія Windows 7 більше не веде себе таким чином.
Аміт Найду

Дивно! Цікаво, чи зможу я з чогось викопати старий cmd.exe ....
Бред

@Brad, я просто спробував і кілька речей і зрозумів, що ви можете отримати таку стару поведінку, якщо перейдете на Raster Fonts у властивостях консолі, замість шрифтів Lucida та True Type і поставте Use legacy consoleпрапорець. Але це дуже погано виглядає на моніторі високої роздільної здатності.
Аміт Найду

1
Насправді, я думаю, я знайшов рішення, яке повністю працює для цього в будь-якому шрифті! Якщо ви просто відлучіть рядок з символами alt-10, а потім перенаправите її на CON, вона спрацює! Наприклад: (echo New-line detected rigghhhtt ◙^<--- HERE!) > CONнавколишні дужки необов’язкові. Ось більш надійний приклад того, що ви можете зробити з цим (І повернення перевезення, які зараз працюють, і повністю незалежно!): I.imgur.com/qqN37PH.png
Brent Rittenhouse

1

Я не знаю, чи це буде працювати для вас, але, поставивши & echo (важливо наступний пробіл). між кожним твердженням, яке потрібно в новому рядку. Я спробував це лише за допомогою простого файлу bat

echo %1

Потім зберегли це як testNewLines.bat

Тож тоді лінія cmd

testNewLines first line&echo Second Line&echo Third line

У результаті виникла наступна реакція

перший рядок
другий рядок
Третій рядок


1

Розкриваючи відповідь Amit ( /superuser//a/1132659/955256 ), я знайшов спосіб зробити це будь-яким шрифтом БЕЗ використання застарілої консолі.

Все, що вам потрібно зробити, це просто відлучити рядок з символами alt-10, а потім перенаправити його на conі воно буде працювати!

Наприклад, наведено:

(ехо Виявлено новий рядок rigghhhtt ◙ ^ <--- ТУТ!)> CON

edit: Факт, що цікаво, здається, що ви можете перенаправити на початок так:

> CON echo Новий рядок виявлений rigghhhtt ◙ ^ <--- ТУТ!

Дивно, так?

Ви отримаєте вихід:


New-line detected rigghhhtt  
<-- HERE!

(Навколишні дужки необов’язкові.)

Ось більш надійний приклад того, що ви можете зробити з цим І поверненням перевезення, які зараз працюють, і абсолютно незалежно!

Найкраще, що це працює, якщо ви переспрямовуєте файл також!
(просто змінити > CONна> desired_output_file.txt

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


1

Виведення ^ зберігаються

set br= ^
<</br (newline)>>
<</br>>

приклад:

@echo off
setlocal enableExtensions enableDelayedExpansion
rem cd /D "%~dp0"


rem //# need 2 [/br], can't be saved to a var. by using %..%;
set br= ^



set "t=t1!br!t2!br!t3"

for /f "tokens=* delims=" %%q in ("!t!") do (
    echo %%q
)


:scIn
rem endlocal
pause
rem exit /b

; вихід:

t1
t2
t3
Press any key to continue . . .

0

Я вважаю, що ви не можете цього зробити з 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"

Бачите, це не так складно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.