29歳、離婚しました。

家事は元妻にまかせっきり。そんな生活力ゼロ男の離婚後の生活を綴ったブログです。著者がその後の生活の中で見つけた生活術やお役立ち情報をお届けします。

PowerShellを使ってクリップボード操作(データの読み書き)を行う方法

   

このブログでは、アフィリエイト広告を利用しています。

PowerShellを使ってクリップボードの操作を行いたい!

作業効率を上げる、作業ミス・もれを防ぐなどの目的で、従来手作業で行っていたPC作業をPowerShellを使って自動化することがあります。

このとき、あらかじめコピーしておいたデータをPowerShellの処理で使用する。
または、PowerShellで加工したデータをコピーしてクリップボードに格納するなど、PowerShellを使ってクリップボードの操作(コピーやペースト機能のように、クリップボードへのデータの読み書き)を行いたいケースもあるでしょう。

そこで今回は、PowerShellを使ってクリップボードの操作を行う方法をご紹介します!

はじめに

本エントリーでご紹介している内容は、Windows 10 1909(PowerShellのバージョン:5.1.18362.752) Professionalの環境にて、正常に動作することを確認しています。

ですがご紹介している方法で使用している一部のコマンドレットについて、以前のバージョンのPowerShellでは動作しない場合がありますこと、あらかじめご了承ください。

PowerShellを使ってクリップボードの操作を行う方法

PowerShellを使ってクリップボードの操作を行う方法は、いくつか考えられます。

今回はその中から、最も使いやすいであろう『Set-Clipboard』コマンドレットと『Get-Clipboard』コマンドレットを使う方法などをご紹介しましょう!

尚、これらのコマンドレットでは、扱うデータによって使用方法が若干異なリます。
そのため、テキストデータファイルやフォルダーに関する(ファイルドロップリスト)データイメージ(画像)データについて、それぞれ個別に操作方法を紹介しています。

テキストデータについて、クリップボード操作を行う方法

まずは『あいうえお』、『test文字列です。』といったような文字列(テキスト)データについて、クリップボード操作を行う方法から紹介しましょう。

文字列データをクリップボードに格納する際は、『Set-Clipboard -Value “<格納する文字列>”』というような構文でコマンドを実行してください。

たとえば『test文字列です。』という文字列データをクリップボードに格納したい場合には、以下のようなコマンドを実行します。

またこのケースでは、『-Value』を省略して以下のように表記することも可能です。

『Set-Clipboard』というコマンドレットの名称から想像できた!
という方もいらっしゃるかもしれませんが、クリップボードに格納されているデータを取得するときは、『Get-Clipboard』というコマンドレットを使用します。

『Get-Clipboard』コマンドレットを実行する際は、『-Format』パラメーターにデータの種類を指定する必要があり、文字列データを取得する際は以下のように『Text』を指定してください。

PowerShellで『Get-Clipboard -Format Text』コマンドを実行している様子

クリップボード内の文字列データに対して、データを追加する方法

クリップボードに格納した文字列データを上書きせず、格納済みのデータに新しい文字列データを追加して格納することも可能です。

たとえば、すでに『test文字列です。』という文字列がクリップボードに格納されていたとしましょう。
そしてこの文字列に、『追加文字列です。』という文字列を追加したいときには、『Set-Clipboard』コマンドレットを使用する際、併せて『-Append』パラメーターを指定してください。

上記コマンドを実行した後に、『Get-Clipboard』コマンドレットを使って格納されているデータを確認すると、以下のような結果となります。

『-Append』パラメーターを指定してデータの追記を行った場合、既存のデータに対して改行文字 + 追加文字列が追加されるようです。

改行文字が不要な場合には、以下のような方法で追加を行うと良いでしょう。

この方法を使うことで、クリップボードには改行文字が含まれていない以下のようなデータが格納されます。

パイプ処理を使ってクリップボードに文字列データを格納する方法

PowerShellでは『|』記号を使うことで、ある処理を別の処理に渡すパイプ機能を使用できます。
このパイプ処理を使って、クリップボードに文字列データを格納することも可能です。

この場合には、『”<格納する文字列>” | Set-Clipboard』という構文のコマンドを実行してください。

『test文字列です。』という文字列データをクリップボードに格納するケースでは、以下のようなコマンドを実行します。

またクリップボードに改行文字が含まれるような文字列を格納したい場合には、たとえば以下のような方法で格納すると良いでしょう。

※配列の要素[0]に1行目のデータが格納されています。

ファイルやフォルダーに関する(ファイルドロップリスト)データについて、クリップボード操作を行う方法

PowerShellを使うことで、ファイルやフォルダーに関する(ファイルドロップリスト)データについて、クリップボード操作を行うことも可能です。

ここでは仮に、以下2つのテキストファイルが含まれている『C:\sample』というパスのフォルダーがあったとしましょう。

  • test1.txt
  • test2.txt

そしてエクスプローラーを使って、『C:\sample』フォルダーをコピーしたとします。

このエクスプローラーを使った手動操作と同等の操作をPowerShellで行う場合、以下のようなコマンドを実行します。

上記コマンドの実行によりクリップボードに格納したデータを取得するときは、『-Format』パラメーターに『FileDropList』を指定した『Get-Clipboard -Format FileDropList』というコマンドを実行します。

またクリップボードに格納されているフォルダー配下にあるファイルを列挙して取得する場合には、以下のような『Get-ChildItem』コマンドレットを併用してください。

列挙された結果の1番目のデータについて、ファイルのパスを取得したいときは、以下のようなコマンドを実行すると良いでしょう。

複数のフォルダーをコピーしている場合には、『Get-Clipboard -Format FileDropList』コマンドの結果は配列形式で取得されます。
そのためエクスプローラーを使って、『C:\sample』フォルダーと『C:\Windows』フォルダーをコピーしていたケースなどでは、以下のように結果を取得すると良いでしょう。

イメージ(画像)データについて、クリップボード操作を行う方法

PowerShellを使って、イメージ(画像)データに関するクリップボード操作も可能です。

今回は、以下のような画像(幅151px、高さ151px)が『C:\sample\sample-image.png』というパスに保存されている前提で説明しています。

青い四角形の画像

『C:\sample\sample-image.png』というパスに保存されている画像データをクリップボードに読み込んで格納する場合には、以下のようなコマンドを実行してください。

$image.Dispose()を実行しないとリソースが開放されず、PowerShellを終了するまでは、当該ファイルの削除などができなくなります
そのため、$imageが不要となった時点で$image.Dispose()を実行し、ただちにリソースを開放しておくと良いでしょう。

上記コマンドを実行した後に、Windowsのペイントソフトウェア(mspaint)を起動。
そして『Ctrl』+『V』ショートカットキーを使用(『Ctrl』キーを押しながら、『V』キーを押下)すると、ペイントソフトウェアにコピーした画像データが貼り付けられることで、データが正常にクリップボードに格納されていたことを確認できます。

次に、クリップボードに格納されている画像データの取得ですが、この方法を説明するために、まずは以下手順で画像データをコピーしてください。

  1. Windowsのペイントソフトウェアで、『C:\sample\sample-image.png』というパスに保存されている画像ファイルを開く。
  2. 『Ctrl』+『A』(『Ctrl』キーを押しながら、『A』キーを押下)ショートカットキーを実行し、画像データの全選択を実行する。
  3. 『Ctrl』+『C』(『Ctrl』キーを押しながら、『C』キーを押下)ショートカットキーを実行し、画像データ(の全領域)をコピーする。
  4. 画像ファイルを閉じる。

以上の手順によりクリップボードに格納されている画像データは、『Get-Clipboard -Format Image』コマンドを使うことで、以下のように取得します。

またクリップボードに保存されている画像データを、ファイルに保存することも可能です。

たとえば『C:\save\sample-image.jpg』というパスにJPG形式で、クリップボードに保存されている画像データの内容を保存する場合には、以下のようなコマンドを実行します。

尚、上記コマンドの実行時に『C:\save』フォルダーが存在しない場合には実行時エラーが発生します。
そのためフォルダーがない場合には、事前に作成しておく必要があります。

コピーしたExcelの表のデータを、PowerShellを使って取得する方法

Excelで作成した表のデータを、PowerShellで使用したい!
といったケースも想定されます。

この場合には、『ConvertFrom-Csv』コマンドレットを併用してデータを取得する方法がおすすめです。

たとえばExcelで以下のような表を作成し、コピーしたとしましょう。

ExcelのB2:D5セル範囲にデータが入力されている表

クリップボードに格納されているこの表のデータは、以下のようなコマンドにより$data変数に取得できます。

この方法でデータを取得した場合には、1行目のデータの取得や、2行目の列2のデータの取得操作が、以下のように分かりやすい表記方法で取得できます。

以上、参考になさってくださーい!

 - Windows, デジタル・家電

ピックアップ コンテンツ&スポンサーリンク