17

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

command -option:text  
whatever

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

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

5 ответов5

16

Используйте символ ^ в качестве escape:

command -option:text^

whatever

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

2

Используйте 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, где оригинальный метод перестал работать.

1

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


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

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

Или рубин

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

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

1

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

echo %1

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

Итак, линия CMD

testNewLines first line&echo Second Line&echo Third line

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

первая строка
вторая линия
Третья строка

1

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

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

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

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

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

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

Странно, а?

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


New-line detected rigghhhtt  
<-- HERE!

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

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

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

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

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