Copie várias linhas do prompt de comando do Windows sem novas linhas forçadas

16

É possível copiar várias linhas do prompt de comando do Windows sem inserir uma nova linha em que cada linha chegue ao final do terminal?

Por exemplo, se eu tiver a seguinte linha no console:

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

Se eu selecionar e copiá-lo, receberei uma nova linha após a palavra 'some', que terei que excluir manualmente.

Existe uma maneira de copiar os dados (comando que será analisado, saída impressa) no formato em que é interpretado / impresso, em vez de com linhas impressas?

Adam Millerchip
fonte
1
No Windows 7/8, existe um clip.exe, que redireciona a entrada para a área de transferência. Você pode usá-lo como c:\> echo your -command | clip.exe. Mas é mais adequado para uma saída de comando ..
semana
afaik não existe uma maneira de fazer isso. mas talvez você pode combinar algo como um script autoit curta com clip.exe para arquivar seu objetivo
weberik
1
desde o Windows 10 o comportamento padrão irá envolver a selecção da linha por isso não mais problema
phuclv

Respostas:

13

O prompt de comando do Windows é notoriamente quebrado nesse aspecto. Não é possível obter o comportamento do Terminal Linux (pelo menos no período anterior ao Windows 10, de acordo com o comentário de Luu).

No entanto, há um recurso obscuro no cmd.exe que ajuda: Manter a tecla Shift pressionada ao clicar com o botão direito do mouse na área selecionada (para copiar) removerá TODAS as novas linhas do texto copiado.

Se você deseja selecionar uma única linha de comando longa (abrangendo várias linhas de terminal), isso é o que você deseja. No entanto, ele sempre removerá todas as novas linhas, portanto, não é possível selecionar várias linhas de comando (ou um script) de maneira sensata.

Procedimento detalhado:

  • Selecione a linha de comando longa usando o botão esquerdo do mouse
  • Pressione a tecla shift
  • Clique com o botão direito do mouse na área selecionada (para copiar)
  • Turno de liberação
  • Agora o texto selecionado está no buffer de cópia sem novas linhas e você pode, por exemplo, colá-lo no cmd.exe novamente usando o botão direito do mouse
Johannes Overmann
fonte
Interessante, eu nunca tinha ouvido falar desse recurso. Parece que é tão bom quanto será possível. Não uso mais o Windows, mas quando tiver a chance de confirmá-lo, aceito esta resposta. :-)
Adam Millerchip
1
desde o Windows 10 você vai ter comportamento Linux por padrão
phuclv
... então "Não é possível obter o comportamento do terminal Linux" está incorreto
phuclv 23/02/16
@ Luu: Obrigado por adicionar as informações sobre o Windows 10. Mas o que você quer dizer com 'por padrão'? Isso sugere que existe um comportamento alternativo para sistemas anteriores ao Windows 10, o que não existe, portanto, seu comentário é enganoso. Além disso: quem está usando o Windows 10? (SCNR)
Johannes Overmann
1
Eu uso o Windows 10 e funciona ao copiar a saída de comandos, mas não ao copiar instruções no prompt de comando. Exemplo: 1) Digite um comando que abranja várias linhas no comando promp; 2) copie - os NewLines indesejados também irão para a área de transferência).
Ivan Akcheurov
3

Outra opção é abrir o menu de contexto da barra de título da janela do console, vá para Propriedades e torne a largura do buffer da tela grande o suficiente para que as coisas não sejam quebradas. (9999 parece ser o valor máximo.)

Se você precisar fazer muito isso, poderá alterar a opção em Padrões, em vez de Propriedades.

Obviamente, esse método se decompõe se as linhas tiverem mais de 9999 caracteres.

1j01
fonte
1
Boa ideia também! Menos obscuro de usar, mas menos visibilidade.
Johannes Overmann
1
@Abraxas Reescrevi a resposta com muito mais detalhes.
1j01 4/16
0

Para habilitar isso no Windows 10:

Com uma janela "cmd" ou "Windows Powershell", navegue até Propriedades (clique no ícone no canto superior esquerdo) e selecione a opção "Ativar seleção de quebra automática de linha".

Meu prompt do Powershell não tinha isso ativado, permitindo que ele fizesse o truque para mim.

Jørn Jensen
fonte
-2

Basta copiar o código no bloco de notas e, na barra de menus, clique Formate , em seguida , clique emWord Wrap

Prime Jay
fonte
-4

Use o SET e, em seguida, combine as partes na expressão. Além disso, você pode fazer para esses fins arquivo em lote ou macro.

@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
fonte
1
Esta resposta não tem nada a ver com a pergunta. Onde está a parte da cópia? Onde está o terminal do Windows?
Johannes Overmann