Copie varias líneas desde el símbolo del sistema de Windows sin líneas nuevas forzadas

16

¿Es posible copiar varias líneas desde el símbolo del sistema de Windows sin insertar una nueva línea donde cada línea llega al final del terminal?

Por ejemplo, si tengo la siguiente línea en la consola:

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

Si selecciono esto y lo copio, obtendré una nueva línea después de la palabra 'algunos', que tendré que eliminar manualmente.

¿Hay alguna forma de copiar los datos (comando que se analizará, salida que se imprime) en la forma en que se interpreta / imprime, en lugar de con líneas rígidas?

Adam Millerchip
fuente
1
En Win 7/8 hay un clip.exe, que redirige la entrada al portapapeles. Puedes usarlo como c:\> echo your -command | clip.exe. Pero es más adecuado para una salida de comando ...
semana
afaik no hay una forma integrada de hacer esto. pero tal vez se puede combinar algo así como un guión autoit corta con clip.exe para archivar su meta
weberik
1
desde Windows 10 el comportamiento predeterminado envolverá la selección de línea así que no hay más problema
phuclv

Respuestas:

13

El símbolo del sistema de Windows está notoriamente roto en este aspecto. No es posible obtener el comportamiento del Terminal Linux (al menos para versiones anteriores a Windows 10 según el comentario de Luu).

Sin embargo, hay una característica oscura en cmd.exe que ayuda: Mantener presionada la tecla Mayús al hacer clic derecho en el área seleccionada (para copiar) eliminará TODAS las líneas nuevas en el texto copiado.

Si desea seleccionar una sola línea de comando larga (que abarca varias líneas de terminal), esto hace lo que desea. Sin embargo, siempre eliminará todas las líneas nuevas, por lo que no es posible seleccionar varias líneas de comando (o un script) de manera sensata.

Procedimiento detallado:

  • Seleccione la línea de comando larga con el botón izquierdo del mouse
  • Presione la tecla shift
  • Haga clic derecho en el área seleccionada (para copiar)
  • Liberar turno
  • Ahora el texto seleccionado está en el búfer de copia sin líneas nuevas y, por ejemplo, puede pegarlo nuevamente en cmd.exe con el botón derecho del mouse
Johannes Overmann
fuente
Interesante, nunca había oído hablar de esa característica. Parece que es tan bueno como va a ser. Ya no uso Windows, pero cuando tenga la oportunidad de confirmarlo, aceptaré esta respuesta. :-)
Adam Millerchip
1
desde Windows 10 obtendrá el comportamiento de Linux por defecto
phuclv
... así que "No es posible obtener el comportamiento del Terminal Linux" es incorrecto
phuclv
@Luu: Gracias por agregar la información sobre Windows 10. ¿Pero qué quiere decir con 'por defecto'? Esto sugiere que existe un comportamiento alternativo para los sistemas anteriores a Windows 10, que no existe, por lo que su comentario es engañoso. También: ¿Quién está usando Windows 10? (SCNR)
Johannes Overmann
1
Yo uso Windows 10 y funciona al copiar la salida de comandos, pero no al copiar declaraciones desde el símbolo del sistema. Ejemplo: 1) Escriba un comando que abarque varias líneas en el símbolo del sistema; 2) cópielo: las NewLines no deseadas también irán al portapapeles).
Ivan Akcheurov
3

Otra opción es abrir el menú contextual de la barra de título de la ventana de la consola, ir a Propiedades y hacer que el ancho del búfer de la pantalla sea lo suficientemente grande como para que las cosas no se ajusten. (9999 parece ser el valor máximo).

Si tiene que hacer esto mucho, puede cambiar la opción en Valores predeterminados en lugar de Propiedades.

Por supuesto, este método se descompone si las líneas tienen más de 9999 caracteres.

1j01
fuente
1
¡Buena idea también! Menos oscuro de usar, pero menos visibilidad.
Johannes Overmann
1
@Abraxas He reescrito la respuesta con mucho más detalle.
1j01
0

Para habilitar esto para Windows 10:

Con una ventana "cmd" o "Windows Powershell", navegue a las propiedades (haga clic en el icono en la esquina superior izquierda) y seleccione la opción "Activar selección de ajuste de línea".

Mi mensaje de Powershell no tenía esto habilitado, lo que me ayudó.

Jørn Jensen
fuente
-2

Simplemente copie el código en el bloc de notas y luego en la barra de menú, haga Formatclic y luego haga clicWord Wrap

Prime Jay
fuente
-4

Use el SET y luego combine las partes en la expresión. Además, puede hacer para tales fines archivo por lotes o 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
fuente
1
Esta respuesta no tiene nada que ver con la pregunta. ¿Dónde está la parte de la copia? ¿Dónde está la parte del terminal de Windows?
Johannes Overmann el