pbcopy pour Windows?

42

Dans MacOSX, une commande peut diriger la sortie d’une commande vers le Presse-papiers afin qu’elle puisse être collée ailleurs dans l’interface graphique.

Comment cela peut-il être fait à partir de cmd.exe ou avec une applet de commande PowerShell?

leeand00
la source

Réponses:

62

Utilisez quelque chose comme:

someCommand | clip

Cela conduira le résultat au presse-papiers de Windows

soandos
la source
Bonne suggestion. Ceci est un utilitaire Windows standard. Sur la plupart des systèmes, c'est à C:\Windows\system32\clip.exe.
Nicole Hamilton
@NicoleHamilton à droite, mais puisque cela fait partie de la variable PATH, il n'est pas nécessaire de le rendre explicite
soandos le
Mon point et une partie de la raison pour laquelle je vous ai donné un vote positif, c’est que j’ai aimé le fait que vous ayez suggéré un utilitaire Windows standard, et non quelque chose que l’opérateur était supposé supprimer de quelque part. La plupart des gens connaissent PATH.
Nicole Hamilton
3
Pour la postérité, si vous voulez le contenu d'un fichier, tapez 'somefile.txt | clip '
ferventcoder
2
De manière gênante, Windows echo ajoute \ r \ n et n'a pas d'écho -n ... donc "echo test | clip" aura le test \ r \ n dans le tampon de copie ... echo | set / p = "test" | clip. .. adresse cette brute
hpavc
6

J'utilise le shell de commande Git Bash pour Windows, et comme quelqu'un l'a mentionné ci-dessus, l'utilisation clipest très ennuyeuse, car elle copie également le retour chariot à la fin de la sortie d'une commande. J'ai donc écrit cette fonction pour y répondre:

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
}

Donc par exemple:

$ pwd | cpy  # copies directory path

$ git branch | cpy # copies current branch of git repo to clipboard
Matthieu
la source
Bon un. Si vous avez installé les utilitaires GNU win32, vous pouvez découper le saut de ligne tret le conserver clip, par exemple:pwd | tr -d \r\n | clip
Ben Sinclair le
2

Juste pour référence, je devais copier ma clé publique directement après que Bitbucket m'avait averti. J'ai pu utiliser @soandos répondre comme suit:

cat ~/.ssh/id_rsa.pub | clipcopier ma clé directement à partir de la ligne de commande sur un PC. (puisque la ligne de commande est nulle comparée au terminal)

Ben Racicot
la source
1

Pour une utilisation dans WSL / bash . Ajouter à ~/.bashrc:

function pbcopy() {
    printf $(</dev/stdin) | clip.exe
}
export -f pbcopy
Rainabba
la source
Cela ne devrait-il pas être printf %s "$(...pour empêcher le% d’expansion dans l’entrée? Je ne sais pas pourquoi le printf est nécessaire
w00t il y a
0

Dans PowerShell, il suffit de diriger le texte dans Set-Clipboard. Pour taper rapidement, vous pouvez utiliser l'alias scb. Cela n'ajoute pas de saut de ligne supplémentaire, contrairement à l' cliputilitaire.

Par exemple, cette commande place le contenu de myfile.txtdans le presse-papiers:

gc .\myfile.txt | scb

Notez que pour les objets représentant des objets de système de fichiers, Set-Clipboardl'objet sera copié de la même façon que l'explorateur le fait lorsque vous Ctrl + C un fichier. Si ce n'est pas ce que vous souhaitiez, dirigez d'abord l'objet vers lui Out-String.

Ben N
la source
0

Cette fonction remplace le clip Windows standard dans Git Bash où une nouvelle ligne finale est copiée.

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

Ceci est basé sur la réponse de Matthew qui ne conserve que la dernière ligne et introduit une nouvelle ligne. Utilisation printfévite la nouvelle ligne qui echoajoute.

Ed Chapel
la source