Utilitário do Windows / linha de comando da ferramenta para mover a área de transferência para o arquivo

3

Eu vi uma ferramenta semelhante CLIP aqui Comando Clip mas funciona na prancheta e não na outra direção.

Eu vi referências a "colar", mas isso não parece ser parte do Windows. Eu preciso encontrar uma solução que funcione com ambientes padrão w7 w8 w10.

Clipe é distribuído. Alguém faz uma ferramenta que funciona da área de transferência para o arquivo?

EDIT Parece que pode ser possível fazer com um comando do powershell
Este programa c # eu acabei de escrever faz o que eu faria com um 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);
    }
}
phil soady
fonte

Respostas:

2

janelas cmd (se a área de transferência contiver dados de texto):

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

Exemplo mostra que o comando acima adiciona dois bytes à saída ( Cr e Lf ):

==> >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

==>

Leia mais sobre o .NET Framework Prancheta Classe métodos.

Editar respostas tópico estendido (salvar imagem, cf. Formato de imagem Classe ):

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"
}
JosefZ
fonte
parece útil, estava apenas testando código c # se (! Clipboard.ContainsImage ()) return; Imagem img = Clipboard.GetImage (); mas muito útil saber que eu poderia iniciar um powershell para acessar System.Windows.Forms.Clipboard] :: GetImage () eu testo isso em breve
phil soady
O código de script (a parte seguinte -Command ) parece precisar ser citado para isso rodar em Bash no Ubuntu no Windows.
Kenny Evitt
a classe Clipboard está disponível desde o .NET 1.1, mas de alguma forma quando eu tentei Powershell -version 2 -command Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.Clipboard]::GetText() não funciona. Só funciona com a versão 3 e acima
phuclv
2

Alguém tem ferramenta que funciona da área de transferência para o arquivo?

Isso pode ser feito usando um arquivo de lote contendo algum VBS incorporado.

GetClip.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

Notas:

  • O conteúdo da área de transferência é gravado em clip.txt no diretório atual

Exemplo de uso:

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>

Fonte: Baseado em Código de lote para colar da área de transferência em um arquivo?

DavidPostill
fonte
Eu estava procurando a solução de dados binários / imagem. Alguém pode achar o script útil embora. obrigado David
phil soady
2

Você pode usar o cmdlet do PowerShell Get-Clipboard (aliased como gcb ).

Escreva o texto da área de transferência para um arquivo:

gcb > myfile.txt

Ele tem uma opção para obter uma imagem da área de transferência, -Format Image, mas isso parece fornecer apenas metadados, então pode não ser útil escrever uma imagem em um arquivo.

gilly3
fonte