Windows的pbcopy?


42

在MacOSX中,有一个命令可以将命令的输出通过管道传输到剪贴板,以便可以将其粘贴到GUI的其他位置。

如何从cmd.exe或使用PowerShell cmdlet完成此操作?

Answers:


62

使用类似:

someCommand | clip

这会将结果通过管道传输到Windows剪贴板


好建议。这是一个标准的Windows实用程序。在大多数系统上,它位于C:\Windows\system32\clip.exe
妮可·汉密尔顿

@NicoleHamilton是对的,但是由于这是PATH变量的一部分,因此无需明确说明
soandos 2012年

我的意思和部分原因是,我喜欢您建议使用标准的Windows实用程序,而不是OP应该从某处进行d / l的操作。大多数人都知道PATH。
妮可·汉密尔顿

3
为了后代,如果要文件的内容,请键入“ somefile.txt | 剪辑”
ferventcoder

2
令人讨厌的是,Windows echo添加了\ r \ n,而没有echo -n ...因此,“ echo test | clip”将在副本缓冲区中包含test \ r \ n ... echo | set / p =“ test” | clip。 ..解决这个
hpavc

6

我正在Windows上使用Git Bash命令外壳,并且如上所述,使用clip它很烦人,因为它还会在任何命令输出的末尾复制回车符。所以我写了这个函数来解决它:

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
}

因此,例如:

$ pwd | cpy  # copies directory path

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

好一个 如果您安装了GNU win32 utils,则可以减少换行符tr并仍然使用clip,即:pwd | tr -d \r\n | clip
Ben Sinclair

2

仅供参考,在Bitbucket给我一个错误的密钥警告之后,我不得不直接复制我的公共密钥。我可以这样使用@soandos答案:

cat ~/.ssh/id_rsa.pub | clip直接从PC上的命令行复制我的密钥。(因为命令行比终端更糟)


1

用于WSL / bash中。添加到~/.bashrc

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

0

在PowerShell中,只需将文本输入即可Set-Clipboard。要进行快速键入,可以使用别名scb。这不会像clip实用程序那样增加额外的换行符。

例如,以下命令将内容myfile.txt放置在剪贴板上:

gc .\myfile.txt | scb

请注意,对于表示文件系统对象的对象,Set-Clipboard将以与Ctrl + C文件时资源管理器相同的方式复制对象。如果这不是您想要的,请Out-String首先通过管道传递对象。


0

此功能替代了复制尾随换行符的Git Bash中的标准Windows剪辑。

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

这是基于Matthew的答案,该答案仅保留最后一行,并引入尾随换行符。使用printf避免echo添加的换行符。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.