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

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

我见过类似的工具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);
    }
}

答案1

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

Powershell -command Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.Clipboard]::GetText()

例子表明上述命令向输出添加了两个字节(CrLf):

==> >1049363a.txt echo first line

==> >>1049363a.txt echo 2nd line

==> clip<1049363a.txt

==> >1049363b.txt Powershell -command Add-Type -AssemblyName System.Windows.Forms;[System.W
indows.Forms.Clipboard]::GetText()

==> findstr /N "^" 1049363*.txt
1049363a.txt:1:first line
1049363a.txt:2:2nd line
1049363b.txt:1:first line
1049363b.txt:2:2nd line
1049363b.txt:3:

==> dir 1049363*.txt |find ".txt"
06.03.2016  17:24                22 1049363a.txt
06.03.2016  17:24                24 1049363b.txt

==>

阅读有关 .NET Framework 的更多信息Clipboard班级方法。

编辑回答扩展主题(保存图像,参见ImageFormat班级):

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"
}

答案2

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

将剪贴板文本写入文件:

gcb > myfile.txt

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

答案3

有人有可以从剪贴板到文件的工具吗?

这可以使用包含一些嵌入式 VBS 的批处理文件来完成。

获取剪辑.cmd:

@echo off
(
echo set objHTML = CreateObject("htmlfile"^)
echo ClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text"^)
echo set objFSO = CreateObject("Scripting.FileSystemObject"^)   
echo set objFile = objFSO.OpenTextFile("clip.txt", 2, true^)
echo objFile.WriteLine ClipboardText
echo objFile.Close
) > "%temp%\clip.vbs"
"%temp%\clip.vbs"
endlocal

笔记:

  • 剪贴板内容写入clip.txt当前目录

用法示例:

F:\test>type LoremIpsum.txt
Id pri magna tibique, vel et eruditi perpetua, numquam mandamus sed et.
Te nam diam veritus.
Ad est quaestio ocurreret, at vix modo prima officiis.
Modus principes definiebas mei et, atqui exerci ea sit.
An eirmod saperet dissentiunt sea, esse postea eleifend ex eam.

F:\test>clip<LoremIpsum.txt

F:\test>getclip

F:\test>type clip.txt
Id pri magna tibique, vel et eruditi perpetua, numquam mandamus sed et.
Te nam diam veritus.
Ad est quaestio ocurreret, at vix modo prima officiis.
Modus principes definiebas mei et, atqui exerci ea sit.
An eirmod saperet dissentiunt sea, esse postea eleifend ex eam.


F:\test>

资料来源:基于将批处理代码从剪贴板粘贴到文件吗?

答案4

如果您有 AutoHotKey:

FileAppend %ClipboardAll%, FileName.raw, UTF-8

将把剪贴板作为原始数据保存到文件中。请参阅以下讨论: https://stackoverflow.com/questions/45648721/autohotkey-how-to-take-a-screenshot-and-to-paste-it-to-a-jpg-file/57142781?noredirect=1#comment101068737_57142781

此处提供自定义 paste.exe(类似于 Win 10 中的 clip.exe): https://www.c3scripts.com/tutorials/msdos/paste.html

相关内容