用于将剪贴板移动到文件的 Windows 实用程序/工具命令行

phi*_*ady 7 windows clipboard powershell command-line batch-file

我见过类似的工具CLIP,但它适用于剪贴板,而不是另一个方向。

我看到过对“粘贴”的引用,但这似乎不是 Windows 的一部分。我需要找到适用于标准 Windows 7、8 和 10 环境的解决方案。

Clip是分布式的。有人有可以从剪贴板到文件的工具吗?

似乎可以使用 PowerShell 命令来完成。

我刚刚编写的这个 C# 程序执行了我使用 PowerShell 执行的操作:

class Clip2File
{
    [STAThread()]
    static void Main(string[] args)
    {
        var fileName = @"c:\demo.png";
        if (args.Length != 0){
            fileName = args[0];
        }
        if (!Clipboard.ContainsImage()) return;
        Image img = Clipboard.GetImage();
        img?.Save(fileName, ImageFormat.Png);
    }
}
Run Code Online (Sandbox Code Playgroud)

gil*_*ly3 7

您可以使用 PowerShell cmdlet Get-Clipboard(别名为gcb)。

将剪贴板文本写入文件:

gcb > myfile.txt
Run Code Online (Sandbox Code Playgroud)

它确实有一个从剪贴板获取图像的选项,-Format Image但这似乎只提供元数据,因此它可能对将图像写入文件没有帮助。


Jos*_*efZ 5

Windows cmd(如果剪贴板包含文本数据):

Powershell -command Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.Clipboard]::GetText()
Run Code Online (Sandbox Code Playgroud)

示例显示上述命令将两个字节添加到输出(CrLf):

Powershell -command Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.Clipboard]::GetText()
Run Code Online (Sandbox Code Playgroud)

阅读有关 .NET FrameworkClipboard方法的更多信息。

编辑答案扩展主题(保存图像,参见ImageFormatClass):

Add-Type -AssemblyName System.Windows.Forms  ### not necessary in PowerShell_ISE
if ($([System.Windows.Forms.Clipboard]::ContainsImage())) {
    $image = [System.Windows.Forms.Clipboard]::GetImage()
    $filename='d:\test\test.png'             ### edit to fit in your circumstances
    
    [System.Drawing.Bitmap]$image.Save($filename,
                    [System.Drawing.Imaging.ImageFormat]::Png)
    
    Write-Output "clipboard content saved as $filename"
} else {
    Write-Output "clipboard does not contains image data"
}
Run Code Online (Sandbox Code Playgroud)