Скопіюйте кілька рядків з командного рядка Windows без вимушених нових рядків


16

Чи можливо скопіювати кілька рядків з командного рядка Windows, не вставляючи новий рядок, де кожен рядок доходить до кінця терміналу?

Наприклад, якщо у мене в консолі є такий рядок:

c:\very_long_path_here\more_path_here>command_i_want_to_copy -with -some
arguments that wrap over lines.

Якщо я виберу це і скопіюю, я отримаю новий рядок після слова "деякі", який мені доведеться видалити вручну.

Чи є спосіб скопіювати дані (команда, яка буде проаналізована, виводиться, що надрукується) у форму, яку інтерпретується / друкується, а не з жорстко обгорнутими рядками?


1
У програмі Win 7/8 є a clip.exe, який перенаправляє вхід до буфера обміну. Ви можете використовувати його як c:\> echo your -command | clip.exe. Але це більше підходить для виведення команд ..
тиждень

afaik не існує побудованого способу зробити це. але, можливо, ви можете поєднати щось схоже на короткий сценарій автоматичної роботи з clip.exe, щоб архівувати свою мету
weberik

1
оскільки в Windows 10 поведінка за замовчуванням призведе до вибору лінії, тому більше не
виникатиме

Відповіді:


13

Командний рядок Windows, як відомо, порушено в цьому аспекті. Неможливо отримати поведінку терміналу Linux (принаймні для попереднього Windows 10 згідно з коментарем Луу).

Однак у cmd.exe є незрозуміла функція, яка допомагає: Утримуючи зсув при натисканні правою кнопкою миші на обрану область (для копіювання), вилучите ВСІ нові рядки з скопійованого тексту.

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

Детальна процедура:

  • Виберіть довгий командний рядок за допомогою лівої кнопки миші
  • Натисніть зсув
  • Клацніть правою кнопкою миші на вибраній області (для копіювання)
  • Зрушення випуску
  • Тепер вибраний текст знаходиться в буфері для копіювання без нових рядків, і ви можете, наприклад, знову вставити його в cmd.exe за допомогою правої кнопки миші

Цікаво, що я ніколи не чув про цю особливість. Схоже, це так добре, як це вийде. Я більше не використовую Windows, але коли отримаю можливість підтвердити це, я прийму цю відповідь. :-)
Адам Міллерчіп

1
оскільки Windows 10 ви отримаєте поведінку Linux за замовчуванням
phuclv

... так "Неможливо отримати поведінку терміналу Linux" невірно
phuclv

@Luu: Дякую за додавання інформації про Windows 10. Але що ви маєте на увазі під "за замовчуванням"? Це говорить про те, що для систем до Windows 10 існує альтернативна поведінка, якої немає, тому ваш коментар вводить в оману. Також: Хто використовує Windows 10? (
SCNR

1
Я використовую Windows 10, і він працює при копіюванні виводу команд, але не при копіюванні висловлювань з командного рядка. Приклад: 1) Введіть команду, яка охоплює кілька рядків у командному підказці; 2) скопіюйте його - небажані NewLines також підуть до буфера обміну).
Іван Акчеуров

2

Інший варіант - відкрити контекстне меню заголовка вікна консолі, перейти до Властивості та зробити ширину буфера екрана достатньо великою, щоб речі не перетворювались. (9999 видається максимальним значенням.)

Якщо вам доведеться це зробити багато, ви можете змінити параметр у налаштуваннях за замовчуванням замість властивостей.

Звичайно, цей метод ламається, якщо рядки довші 9999 символів.


1
Гарна ідея теж! Менш незрозуміле у використанні, але менша видимість.
Йоханнес Оверманн

1
@Abraxas Я переписав відповідь набагато детальніше.
1j01

0

Щоб увімкнути це для Windows 10:

За допомогою вікна "cmd" або "Powershell Windows" перейдіть до властивостей (натисніть значок у верхньому лівому куті) та оберіть опцію "Увімкнути вибір обтікання рядків".

У моєму запиті Powershell це не було ввімкнено, що дозволило зробити це для мене хитрістю.


-2

Просто скопіюйте код у блокнот, потім на панелі меню, натисніть Formatта клацнітьWord Wrap


-4

Скористайтеся SET, а потім поєднайте частини у виразі. Крім того, ви можете зробити для таких цілей пакетний файл або макрос.

@set WAIKTools=%ProgramFiles%\WAIK\Tools\amd64
@set LabelCD=GRTMPVOL_RU

@IF "%time:~0,1%" GTR "0" SET current=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%@%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%
@IF "%time:~0,1%" LSS "0" SET current=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%@0%TIME:~1,1%.%TIME:~3,2%.%TIME:~6,2%

"%WAIKTools%\oscdimg.exe" -h -m -n -l%LabelCD% -b"%cd%\boot\w32sp3.bif" "BUILD-%current%" "BUILD-%current%-ISO\%LabelCD%.ISO"

1
Ця відповідь не має нічого спільного з питанням. Де копіюється частина? Де знаходиться термінальна частина Windows?
Йоганнес Оверманн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.