Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Працюємо з буфером обміну з командного рядка.

Про те, як користуватися буфером обміну, знає практично будь-який користувач Windows. Однак далеко не всі знають, що працювати з буфером можна не тільки з графічної оболонки, але і з командного рядка. Для цього є кілька різних способів.

Спосіб 1

Дістатися до буфера обміну можна за допомогою.Net класу Clipboard. Для того, щоб цей клас став доступний, спочатку завантажимо збірку:

Add-Type -AssemblyName PresentationCore

Після чого виведемо статичні методи класу командою:

[Windows .Clipboard] | Get-Member -Static



Назви методів інтуїтивно зрозумілі, наприклад set - додати в буфер, get - отримати з буфера і т.п. Для прикладу помістимо в буфер обміну текст:

[Windows.Clipboard] :: SetText ( "Hello")

Потім вважаємо текст з буфера:

[Windows.Clipboard] :: GetText ()

І очистимо буфер:

[Windows.Clipboard] :: Clear ()



Буфер може містити не тільки текст, а й деякі інші типи даних (зображення, аудіо та списки файлів).Як приклад додамо в буфер список файлів (filedroplist), а потім подивимося результат:

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



При необхідності можна уточнити , який саме тип даних міститься в буфері. Наприклад додамо в нього текст:

[Windows.Clipboard] :: SetText ( "Hello")

І перевіримо, чи містить буфер текстові дані або список файлів:

[Windows.Clipboard] :: ContainsText ()
[Windows.Clipboard] :: ContainsFileDropList ()

Перша команда поверне True, друга - False, тобто в буфері знаходиться саме текст.



Спосіб 2

У п'ятій версії 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



Спосіб 3

Ще можна працювати з буфером обміну через методи COM-об'єкта HtmlFile.Цей Cпособ не самий прямий, але цілком робочий. Для початку створюємо новий об'єкт:

$ clipboard = New-Object -ComObject "htmlfile"

Потім поміщаємо дані в змінну:

$ data = "Hello"

за допомогою методу setData додаємо дані в буфер:

$ clipboard.parentWindow.clipboardData.setData ( "text", $ data)

А за допомогою методу getData отримуємо його вміст:

$ clipboard.parentWindow.clipboardData.getData ( "text")



Спосіб 4

Ну і наостанок стара добра утиліта командного рядка clip.exe. З її допомогою можна помістити дані в буфер, наприклад передавши їх по конвеєру:

"Hello" | clip

Отримати назад з буфера дані утиліта не вміє, для цього доведеться скористатися одним з описаних вище методів.



.