Скопируйте несколько строк из командной строки Windows без принудительного перевода строки

16

Можно ли скопировать несколько строк из командной строки Windows без вставки новой строки, где каждая строка достигает конца терминала?

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

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

Если я выберу это и скопирую, после слова 'some' я получу новую строку, которую мне придется удалить вручную.

Есть ли способ скопировать данные (команда, которая будет проанализирована, вывод распечатан) в том виде, в котором она интерпретируется / печатается, а не в виде жестких строк?

Адам Миллерчип
источник
1
В Win 7/8 есть clip.exeперенаправление ввода в буфер обмена. Вы можете использовать это как c:\> echo your -command | clip.exe. Но это больше подходит для вывода команды ..
неделя
afaik нет встроенного способа сделать это. но, возможно, вы можете объединить что-то вроде короткого сценария autoit с clip.exe для архивирования вашей цели
weberik
1
так как в Windows 10 поведение по умолчанию
переносит

Ответы:

13

Командная строка Windows в этом аспекте печально известна. Невозможно получить поведение терминала Linux (по крайней мере для пред-Windows 10 согласно комментарию Луу).

Однако в cmd.exe есть неясная функция, которая помогает: удерживая нажатой клавишу shift при щелчке правой кнопкой мыши в выбранной области (для копирования), удаляются ВСЕ новые строки в скопированном тексте.

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

Подробная процедура:

  • Выберите длинную командную строку, используя левую кнопку мыши
  • Нажмите вниз сдвиг
  • Щелкните правой кнопкой мыши в выбранной области (для копирования)
  • Отпустить сдвиг
  • Теперь выделенный текст находится в буфере копирования без перевода строки, например, вы можете снова вставить его в cmd.exe, используя правую кнопку мыши.
Йоханнес Оверманн
источник
Интересно, я никогда не слышал об этой функции. Похоже, это так же хорошо, как это получится. Я больше не использую окна, но когда у меня будет возможность подтвердить это, я приму этот ответ. :-)
Адам Миллерчип
1
начиная с windows 10, вы получите поведение Linux по умолчанию
phuclv
... так что "Невозможно получить поведение терминала Linux" неверно
phuclv
@Luu: Спасибо за добавление информации о Windows 10. Но что вы подразумеваете под «по умолчанию»? Это говорит о том, что для систем, предшествующих Windows 10, существует альтернативное поведение, которого нет, поэтому ваш комментарий вводит в заблуждение. Также: кто использует Windows 10? (SCNR)
Йоханнес Оверманн
1
Я использую Windows 10, и она работает при копировании вывода команд, но не при копировании операторов из командной строки. Пример: 1) Введите команду, которая занимает несколько строк в командной строке; 2) скопируйте его - ненужные NewLines также попадут в буфер обмена).
Иван Акчеуров
3

Другой вариант - открыть контекстное меню строки заголовка окна консоли, перейти в «Свойства» и сделать ширину экранного буфера достаточно большой, чтобы вещи не переносились. (9999 представляется максимальным значением.)

Если вам приходится много делать, вы можете изменить опцию в настройках по умолчанию вместо свойств.

Конечно, этот метод не работает, если строки длиннее 9999 символов.

1j01
источник
1
Хорошая идея тоже! Менее неясный, но менее заметный.
Йоханнес Оверманн
1
@Abraxas Я переписал ответ более подробно.
1j01
0

Чтобы включить это для Windows 10:

В окне «cmd» или «Windows Powershell» перейдите к свойствам (щелкните значок в левом верхнем углу) и выберите параметр «Включить выбор переноса строк».

В моем приглашении 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"
STTR
источник
1
Этот ответ не имеет ничего общего с вопросом. Где находится копия? Где находится оконечная часть Windows?
Йоханнес Оверманн