Работа с клипборда от командния ред

Почти всеки потребител на Windows знае как да използва клипборда. Въпреки това, не всеки знае, че можете да работите с буфера не само от графичната обвивка, но и от командния ред. Има няколко различни начина да направите това.

Можете да стигнете до клипборда с помощта на класа .Net Clipboard. За да направим този клас достъпен, първо зареждаме сборката:

Add-Type -AssemblyName PresentationCore

След това ще покажем статичните методи на класа с командата:

[Windows.Clipboard] Get-Member -Static

буфера

Имената на методите са интуитивни, например set - добавяне към буфера, get - получаване от буфера и т.н. Например, поставете текст в клипборда:

След това четем текста от буфера:

И изчистете буфера:

Буферът може да съдържа не само текст, но и някои други видове данни (изображения, аудио и списъци с файлове). Като пример, нека добавим списък с файлове (filedroplist) към буфера и след това да видим резултата:

$files = Get-ChildItem C:\files [Windows.Clipboard]::SetFileDropList($files) [Windows.Clipboard]::GetFileDropList()

Ако е необходимо, можете да посочите какъв тип данни се съдържат в буфера. Например добавете текст към него:

И проверете дали буферът съдържа текстови данни или списък с файлове:

Първата команда ще върне True, втората - False, т.е. текстът е в буфера.

Петата версия на PowerShell въведе специални кратки команди Get-Clipboard и Set-Clipboard за работа с клипборда. Работата с тях е много по-лесна и удобна, например добавете текст към буфера и след това го прочетете:

Set-Clipboard -Value ″Hello″ Get-Clipboard

Друга полезна функция на новите командлети е възможността за добавяне на данни към буфера, без да презаписвате съществуващите. ЗаДобавянето става с помощта на Set-Clipboard с клавиша Append. Например, нека добавим още текст и след това да проверим съдържанието на буфера:

Set-Clipboard -Value ″World″ -Append

Ако буферът съдържа повече от обикновен текст, тогава типът данни трябва да бъде указан при получаване на съдържанието. Например, добавете списък с файлове към буфера и го изведете:

Set-Clipboard -Path C:\files\* Get-Clipboard -Format FileDropList

Можете също да работите с клипборда чрез методите на HtmlFile COM обекта. Този метод не е най-директният, но доста работещ. Нека започнем със създаването на нов обект:

$clipboard = New-Object -ComObject ″htmlfile″

След това поставяме данните в променлива:

Използвайки метода setData, добавяме данни към буфера:

И използвайки метода getData, получаваме съдържанието му:

И накрая, добрата стара помощна програма за команден ред clip.exe. С негова помощ можете да поставите данни в буфер, например, като ги прехвърлите през конвейер:

Помощната програма не може да върне данни от буфера, за това ще трябва да използвате един от методите, описани по-горе.