【bat】バッチファイルでクリップボードに文字列をコピーする方法

bat

バッチファイルは標準ではクリップボードを直接操作する機能を持ちませんが、Windowsに備わっているユーティリティ「clip.exe」を使えば簡単に文字列をコピーできます。clip.exeはWindows 7以降で利用可能で、標準入力から受け取った内容をクリップボードに転送してくれる仕組みです。ここではバッチからclip.exeを呼び出して文字列やファイル内容をコピーする方法を紹介します。

基本:文字列をクリップボードにコピーする

echoコマンドとclipを組み合わせるのが最もシンプルな方法です。

@echo off
echo こんにちは、世界! | clip
echo 文字列をクリップボードにコピーしました。
pause

このバッチを実行すると「こんにちは、世界!」という文字列がクリップボードに入り、Ctrl+Vで貼り付け可能になります。

変数の内容をコピーする

環境変数に格納した値をそのままクリップボードに送ることもできます。

@echo off
set "TEXT=Batchファイルでコピーしたテキストです"
echo %TEXT% | clip
echo コピー完了: %TEXT%
pause

複数行をコピーする

複数行をまとめてコピーしたい場合は、複数のechoをまとめてclipにリダイレクトする方法があります。

@echo off
(
  echo 一行目のテキスト
  echo 二行目のテキスト
  echo 三行目のテキスト
) | clip
echo 複数行をクリップボードにコピーしました。
pause

ファイルの内容をコピーする

テキストファイル全体をクリップボードに入れる場合は、ファイルをそのままclipに渡します。

@echo off
type sample.txt | clip
echo sample.txt の内容をコピーしました。
pause

応用:コマンドの実行結果をコピーする

dirやipconfigなど、任意のコマンド出力をそのままコピーすることも可能です。

@echo off
ipconfig | clip
echo ネットワーク情報をクリップボードにコピーしました。
pause

注意点

clip.exeは標準でインストールされていますが、古いWindows XPなどでは利用できません。また、バイナリファイルを扱うと文字化けが発生するため、基本的にはテキストのみを対象にするのが適しています。UTF-8で扱いたい場合はPowerShell経由でSet-Clipboardを呼び出す方法もあります。

まとめ

バッチファイルでクリップボードに文字列をコピーするにはclip.exeを使うのが最も手軽です。echoや変数展開と組み合わせて必要なテキストを自在にコピーでき、ファイル内容やコマンドの出力も同様に扱えます。日常的な作業効率化の小技として取り入れると便利です。