pbcopy para Windows?


42

En MacOSX hay un comando que puede canalizar la salida de un comando al portapapeles para que pueda pegarse en otro lugar en la GUI.

¿Cómo se puede hacer esto desde cmd.exe o con un cmdlet de PowerShell?

Respuestas:


62

Use algo como:

someCommand | clip

Eso canalizará el resultado al portapapeles de Windows


Buena sugerencia. Esta es una utilidad estándar de Windows. En la mayoría de los sistemas, está en C:\Windows\system32\clip.exe.
Nicole Hamilton

@NicoleHamilton bien, pero dado que eso es parte de la variable PATH, no es necesario que se
explique

Mi punto y parte de la razón por la que le di un voto positivo fue que me gustó que sugiriera una utilidad estándar de Windows, no algo que se suponía que el OP d / l de alguna parte. La mayoría de la gente sabe sobre PATH.
Nicole Hamilton

3
Para la posteridad, si desea el contenido de un archivo es 'escriba somefile.txt | clip '
ferventcoder

2
Molestamente, Windows echo agrega un \ r \ ny no tiene eco -n ... así que "echo test | clip" tendrá test \ r \ n en el búfer de copia ... echo | set / p = "test" | clip. .. aborda este asqueroso
hpavc

6

Estoy usando el shell de comandos de Git Bash para Windows, y como alguien señaló anteriormente, usar clipes muy molesto, porque también copia el retorno de carro al final de la salida de cualquier comando. Entonces escribí esta función para abordarla:

function cpy {
while read data; do     # reads data piped in to cpy
    echo "$data" | cat > /dev/clipboard     # echos the data and writes that to /dev/clipboard
done
tr -d '\n' < /dev/clipboard > /dev/clipboard     # removes new lines from the clipboard
}

Así por ejemplo:

$ pwd | cpy  # copies directory path

$ git branch | cpy # copies current branch of git repo to clipboard

Bueno uno Si tiene instaladas las utilidades GNU win32, puede recortar el salto de línea try seguir usándolo clip, es decir:pwd | tr -d \r\n | clip
Ben Sinclair

2

Solo como referencia, tuve que copiar mi clave pública directamente después de que Bitbucket me diera una advertencia de clave incorrecta. Pude usar la respuesta de @soandos así:

cat ~/.ssh/id_rsa.pub | clipcopiar mi clave directamente desde la línea de comandos en una PC. (ya que la línea de comando apesta en comparación con la terminal)


1

Para uso en WSL / bash . Añadir a ~/.bashrc:

function pbcopy() {
    printf $(</dev/stdin) | clip.exe
}
export -f pbcopy

¿No debería ser eso printf %s "$(...para evitar el% de expansión en la entrada? No estoy seguro de por qué se necesita el printf
w00t

0

En PowerShell, simplemente canalice el texto Set-Clipboard. Para escribir rápidamente, puede usar el alias scb. Esto no agrega un salto de línea adicional como lo hace la cliputilidad.

Por ejemplo, este comando coloca el contenido de myfile.txten el portapapeles:

gc .\myfile.txt | scb

Tenga en cuenta que para los objetos que representan los objetos del sistema de archivos, Set-Clipboardcopiará el objeto en el mismo sentido que Explorer lo hace cuando Ctrl + C un archivo. Si eso no es lo que querías, pasa el objeto Out-Stringprimero.


0

Esta función reemplaza el clip estándar de Windows en Git Bash donde se copia una nueva línea final.

function clip {
    printf "$(</dev/stdin)" | cat > /dev/clipboard
}

Esto se basa en la respuesta de Matthew, que solo conserva la última línea e introduce una nueva línea final. El uso printfevita la nueva línea que echoagrega.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.