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

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

Windowsのバッチファイルで作業を自動化しているとき、「生成した情報をクリップボードに入れて、すぐどこかに貼り付けたい」と思ったことはありませんか?そんな場面で活躍するのが clip.exe というWindowsの標準コマンドです。

clip.exe は、パイプやリダイレクトで渡したテキストをクリップボードに格納できるシンプルなツールです。追加インストール不要でWindows XP以降すべての環境に搭載されており、バッチファイルと組み合わせるだけでコピー操作を完全に自動化できます。

この記事では、clip.exe の基本から、文字列・変数・ファイル内容・コマンド出力のコピー方法、さらに文字化け対策やPowerShellとの連携まで、実践的なサンプルコードと一緒にすべて解説します。読み終えた後には、クリップボード操作をバッチファイルに組み込む技術が完全に身についているはずです。

スポンサーリンク
  1. clip.exe の基本と仕組み
  2. 文字列・変数をクリップボードにコピーする
    1. 固定文字列をコピーする
    2. 変数の内容をコピーする
    3. スペースなしで変数をコピーするテクニック
  3. 複数行テキストをクリップボードにコピーする
    1. 変数を使った複数行コピー
  4. ファイル内容をまるごとコピーする
    1. ファイルの存在確認を追加した安全な書き方
    2. バッチファイル自身と同じフォルダのファイルをコピーする
  5. コマンド出力をクリップボードにコピーする
    1. よく使うコマンド出力のコピー例
    2. ipconfig の特定情報だけをコピーする
    3. 主なコマンドと用途一覧
  6. 文字コードと文字化けの仕組み
    1. clip.exe の文字コード変換フロー
    2. コードページを確認・変更する方法
  7. UTF-8テキストを正しくコピーする(PowerShell Set-Clipboard 併用)
    1. UTF-8文字列を直接コピーする
    2. clip.exe と Set-Clipboard の使い分け
  8. クリップボードの内容を取得・確認する方法
    1. クリップボードの内容を画面に表示する
    2. クリップボードの内容を変数に格納する
  9. クリップボードをクリア(空にする)する方法
    1. clip.exe で空にする方法
    2. PowerShell でクリアする方法
  10. 実践テンプレート:日時付きコンピューター情報をワンクリックでコピー
  11. 実践テンプレート:複数のIPアドレス情報を整形してコピー
  12. 実践テンプレート:フォルダ内ファイル一覧をコピーするツール
  13. 実践テンプレート:パスワードや定型文を安全にコピーするバッチ
  14. PowerShell Set-Clipboard / Get-Clipboard の詳細活用
    1. Set-Clipboard の主なパラメーター
    2. バッチから PowerShell Set-Clipboard を活用するパターン集
    3. Get-Clipboard の活用例
  15. トラブルシューティング
    1. 文字化けが発生した場合の診断手順
    2. 改行コードの問題
  16. まとめ

clip.exe の基本と仕組み

clip.exe は Windows に標準搭載されているコマンドラインツールで、標準入力(stdin)から受け取ったテキストをクリップボードに書き込むという単純明快な動作をします。単体で起動するとキーボード入力待ちになるため、必ずパイプ(|)またはリダイレクト(<)と組み合わせて使います。

clip.exe の動作フロー
テキストソース  ──[パイプ/リダイレクト]──>  clip.exe  ──>  クリップボード

例: echo Hello | clip
    ("Hello" という文字列がクリップボードに格納される)

clip.exe が受け取れるテキストソースは以下の3種類です。

clip.exe が受け取れる3種類のテキストソース

  • パイプ(|):コマンドの出力を直接 clip に渡す(例: echo text | clip
  • リダイレクト(<):ファイルの内容を clip に読み込ませる(例: clip < file.txt
  • 標準入力:clip 単体起動時にキーボード入力を受け付ける(Ctrl+Zで終了)

clip.exe は引数としてファイル名を受け付けません。「clip file.txt」という書き方は動作しないので注意してください。必ずリダイレクト構文(clip < file.txt)を使います。

操作 構文 用途
文字列をコピー echo 文字列 | clip 固定テキストのコピー
ファイルをコピー clip < ファイル名 テキストファイルの内容コピー
コマンド出力をコピー コマンド | clip コマンド実行結果のコピー

文字列・変数をクリップボードにコピーする

最もシンプルな使い方は、固定文字列を echo コマンドと組み合わせる方法です。

固定文字列をコピーする

basic-copy.bat
@echo off
rem 固定文字列をクリップボードにコピー
echo Hello, World! | clip
echo クリップボードにコピーしました。

注意:echo コマンドは文字列の末尾に改行(CRLF)を付加します。「Hello, World!」とコピーしたつもりでも、実際には「Hello, World!\r
」がクリップボードに入ります。多くの場合は問題ありませんが、改行を含めたくない場面では後述の方法を使ってください。

変数の内容をコピーする

バッチファイルで最も実用的な使い方は、set コマンドで定義した変数の値をクリップボードに入れるパターンです。

variable-copy.bat
@echo off
setlocal

rem 変数に値をセット
set MESSAGE=https://example.com/dashboard

rem 変数の内容をクリップボードにコピー
echo %MESSAGE% | clip

echo コピー完了: %MESSAGE%
endlocal

注意:echo %変数% の書き方では、echo と変数の間にスペースが入り、コピーされる文字列の末尾にスペースが付くことがあります。スペースが気になる場合は echo(%変数%(echoと開き丸括弧を直結)とするとスペースなしで出力できます。

スペースなしで変数をコピーするテクニック

nospace-copy.bat
@echo off
setlocal
set URL=https://codingls.com

rem echo( を使うとスペースなしで出力できる
echo(%URL% | clip

echo URLをコピーしました。
endlocal

ポイント:echo( は undocumented な構文ですが、Windows XP 以降のほぼすべての環境で動作します。バッチファイルで末尾スペースを防ぎたい場面の定番テクニックです。

複数行テキストをクリップボードにコピーする

複数行のテキストをクリップボードにコピーしたい場合、単純に複数の echo | clip を並べても最後の1行しか残りません。複数行コピーにはグループコマンド(カッコでのグループ化)を使います。

multiline-copy.bat
@echo off
setlocal

rem 複数行をグループコマンドでまとめてclipに渡す
(
  echo 1行目のテキスト
  echo 2行目のテキスト
  echo 3行目のテキスト
) | clip

echo 3行分のテキストをコピーしました。
endlocal

カッコで囲まれた複数の echo の出力が結合され、1つの入力として clip.exe に渡されます。これにより、クリップボードには3行のテキストが改行付きで格納されます。

変数を使った複数行コピー

multiline-var-copy.bat
@echo off
setlocal

set NAME=田中太郎
set EMAIL=tanaka@example.com
set TEL=03-1234-5678

rem 連絡先情報を複数行でコピー
(
  echo 氏名: %NAME%
  echo メール: %EMAIL%
  echo 電話: %TEL%
) | clip

echo 連絡先情報をクリップボードにコピーしました。
endlocal

グループコマンドの注意点

  • カッコの中で echo を使う場合、行頭のスペース(インデント)はそのまま出力されます
  • カッコの閉じ ) の後に | clip を書くのが正しい構文です
  • 各 echo 行の末尾スペースもそのまま含まれるので注意

ファイル内容をまるごとコピーする

テキストファイルの内容全体をクリップボードにコピーするには、リダイレクト(<)を使います。これが clip.exe の最もシンプルかつ強力な使い方の一つです。

file-copy.bat
@echo off
setlocal

rem ファイルの内容をそのままクリップボードにコピー
clip < template.txt

echo template.txt の内容をコピーしました。
endlocal

ファイルの存在確認を追加した安全な書き方

safe-file-copy.bat
@echo off
setlocal

set FILE=C:\work\report.txt

rem ファイルの存在を確認してからコピー
if not exist %FILE% (
  echo エラー: ファイルが見つかりません: %FILE%
  exit /b 1
)

clip < %FILE%
echo コピー完了: %FILE%
endlocal

バッチファイル自身と同じフォルダのファイルをコピーする

バッチファイルの場所を基準にファイルを指定したい場合は %~dp0 を使います。

relative-file-copy.bat
@echo off
setlocal

rem %~dp0 = このバッチファイルが置かれているフォルダのパス(末尾に\あり)
clip < %~dp0template.txt

echo 同フォルダの template.txt をコピーしました。
endlocal

ポイント:%~dp0 はバッチファイルの実行場所に関わらず常にバッチファイル自身のディレクトリパスを返します。ファイルを相対パスで指定するより安全で、バッチファイルをどこに移動しても正しく動作します。

コマンド出力をクリップボードにコピーする

コマンドの実行結果をそのままクリップボードに格納できるのが clip.exe の便利な点です。ネットワーク情報やシステム情報の取得など、実用的な場面で多数活躍します。

よく使うコマンド出力のコピー例

command-output-copy.bat
@echo off
setlocal

rem IPアドレス情報をコピー
ipconfig | clip
echo IPアドレス情報をコピーしました。

pause

rem ログインユーザー名をコピー
whoami | clip
echo ユーザー名をコピーしました。

pause

rem カレントディレクトリのファイル一覧をコピー
dir /b | clip
echo ファイル一覧をコピーしました。

endlocal

ipconfig の特定情報だけをコピーする

ipconfig の出力全体ではなく、IPv4アドレスだけを抽出してコピーする方法です。

ipv4-copy.bat
@echo off
setlocal

rem IPv4アドレスを含む行だけを抽出してコピー
ipconfig | findstr "IPv4" | clip

echo IPv4アドレス情報をコピーしました。
endlocal

主なコマンドと用途一覧

コマンド コピーされる内容 用途
ipconfig | clip 全ネットワーク情報 ネット設定確認・共有
whoami | clip 現在のログインユーザー名 ユーザー名のメモ
hostname | clip コンピューター名 PC名のメモ
dir /b | clip ファイル名一覧 ファイル構成の記録
dir /s /b | clip 全サブフォルダのファイル一覧 フォルダ全体の構成記録
systeminfo | clip OS・ハード情報全般 システム情報の共有
netstat -an | clip ネットワーク接続状態 ポート使用状況の確認
tasklist | clip 実行中プロセス一覧 プロセス状況の記録

文字コードと文字化けの仕組み

clip.exe を使っていると日本語が文字化けするケースがあります。この問題を解決するには、clip.exe の文字コード変換の仕組みを理解することが重要です。

clip.exe の文字コード変換フロー

文字コード変換フロー
テキストデータ
    ↓
コマンドプロンプトのコードページ(デフォルト: CP932 / Shift-JIS)
    ↓
clip.exe が受け取る(バイト列として受信)
    ↓
clip.exe がUTF-16 LEに変換してクリップボードに格納
    ↓
クリップボードのテキスト(CF_UNICODETEXT形式)

つまり、clip.exe はコマンドプロンプトのコードページ(通常はCP932 = Shift-JIS)で入力を受け取り、内部でUnicode(UTF-16 LE)に変換してクリップボードに格納します。

日本語が文字化けする原因のほとんどは、バッチファイルの文字コードとコマンドプロンプトのコードページが一致していないことです。

バッチファイルの文字コード コードページ 日本語の扱い
Shift-JIS(CP932) 932(デフォルト) 正常にコピーされる
UTF-8(BOMなし) 932(デフォルト) 文字化けが起きる
UTF-8(BOMあり) 65001(chcp 65001) 条件次第で正常

コードページを確認・変更する方法

codepage-check.bat
@echo off

rem 現在のコードページを確認
chcp

rem Shift-JIS (CP932) に切り替え
rem chcp 932 >nul

rem UTF-8 に切り替え
rem chcp 65001 >nul

ポイント:バッチファイルに日本語を直接書く場合は、ファイルをShift-JIS(CP932)で保存するのが最も確実です。VSCode を使っている場合は、右下のエンコーディング表示をクリックして「Shift JIS」を選択して保存してください。

UTF-8テキストを正しくコピーする(PowerShell Set-Clipboard 併用)

UTF-8で保存されたテキストファイルをクリップボードにコピーする場合、clip.exe だけでは文字化けが発生することがあります。このような場合はPowerShellの Set-Clipboard コマンドレットを使うのが確実です。

utf8-copy.bat(PowerShell経由でUTF-8ファイルをコピー)
@echo off
setlocal

set FILE=C:\work\utf8-text.txt

rem PowerShellでUTF-8ファイルを読み込んでクリップボードにセット
powershell -Command "Get-Content -Path '%FILE%' -Encoding UTF8 | Set-Clipboard"

echo UTF-8ファイルをコピーしました。
endlocal

UTF-8文字列を直接コピーする

utf8-string-copy.bat
@echo off
setlocal

rem PowerShellで文字列を直接Set-Clipboardに渡す
powershell -Command "Set-Clipboard -Value 'コピーしたいUTF-8テキスト'"

echo コピーしました。
endlocal

注意:PowerShell の Set-Clipboard は Windows PowerShell 5.1 以降および PowerShell 7.x で利用可能です。Windows 7 等の古い環境では使えない場合があります。Windows 10 / 11 環境では標準で動作します。

clip.exe と Set-Clipboard の使い分け

比較項目 clip.exe Set-Clipboard
日本語(Shift-JIS) 問題なし 問題なし
日本語(UTF-8ファイル) 文字化けの可能性あり -Encoding UTF8 で解決
起動速度 高速 やや遅い(PS起動分)
構文のシンプルさ シンプル やや長い
古いWindows対応 XP以降すべて PS 5.1以降

クリップボードの内容を取得・確認する方法

バッチファイルでクリップボードに何が入っているかを確認したり、その内容を変数に格納したりするには PowerShell の Get-Clipboard を使います。

クリップボードの内容を画面に表示する

get-clipboard.bat
@echo off
setlocal

rem クリップボードの内容を表示
echo --- クリップボードの内容 ---
powershell -Command "Get-Clipboard"
echo ---------------------------
endlocal

クリップボードの内容を変数に格納する

PowerShell の出力をバッチファイルの変数に取り込むには for /f を使います。

clipboard-to-var.bat
@echo off
setlocal enabledelayedexpansion

rem クリップボードの内容を変数CBに格納
for /f "delims=" %%i in ('powershell -Command "Get-Clipboard"') do (
  set CB=%%i
)

echo クリップボードの内容: !CB!
endlocal

注意:この方法はクリップボードが1行テキストの場合に有効です。複数行の場合は for /f によって最後の行だけが格納されます。複数行を扱う場合はPowerShellスクリプト側で処理することを推奨します。

クリップボードをクリア(空にする)する方法

セキュリティ上の理由や作業後にクリップボードを空にしたい場合もあります。clip.exe で空にする方法と PowerShell を使う方法があります。

clip.exe で空にする方法

clear-clipboard.bat(clip.exeを使う方法)
@echo off

rem 空文字列をクリップボードに送る(事実上クリア)
echo. | clip

rem または NUL デバイスから読み込む(完全に空にする)
clip < nul

echo クリップボードをクリアしました。

clip < nul は NUL デバイス(Windows の空デバイス)から何も読まずに clip に渡すため、クリップボードを完全に空にします。

PowerShell でクリアする方法

clear-clipboard-ps.bat(PowerShellを使う方法)
@echo off

rem PowerShellでクリップボードをクリア
powershell -Command "Set-Clipboard -Value $null"

echo クリップボードをクリアしました。

ポイント:パスワードをクリップボードにコピーして使用した後は、自動的にクリアするバッチを作っておくと安全です。一定時間後に自動クリアする場合は timeout /t 30 /nobreak >nul で30秒待ってからクリアする処理を追加できます。

実践テンプレート:日時付きコンピューター情報をワンクリックでコピー

IT業務でよくある「サポート対応時にPCの基本情報を素早くコピーして貼り付けたい」というシナリオに対応した実践的なバッチファイルです。

pc-info-copy.bat
@echo off
setlocal

rem 現在日時を取得
set DT=%DATE% %TIME%

rem コンピューター名とユーザー名を取得
for /f %%h in ('hostname') do set PC_NAME=%%h
for /f %%u in ('whoami') do set USER=%%u

rem IPv4アドレスを取得
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr "IPv4"') do (
  set IP=%%i
  goto :got_ip
)
:got_ip

rem 情報をまとめてクリップボードにコピー
(
  echo 【PC基本情報】
  echo 取得日時 : %DT%
  echo PC名   : %PC_NAME%
  echo ユーザー : %USER%
  echo IPアドレス: %IP%
) | clip

echo PC基本情報をクリップボードにコピーしました。
echo そのままメモ帳等に貼り付けてください。
pause
endlocal

このバッチを実行すると、以下のような内容がクリップボードにコピーされます。

コピーされる内容の例
【PC基本情報】
取得日時 : 2025/03/11 09:30:45.12
PC名   : DESKTOP-ABC1234
ユーザー : domain\tanaka
IPアドレス:  192.168.1.100

実践テンプレート:複数のIPアドレス情報を整形してコピー

複数のネットワークアダプターがある環境で、すべてのIPv4アドレスを整形してコピーしたい場合のテンプレートです。

network-info-copy.bat
@echo off
setlocal

rem ネットワーク情報を一時ファイルに書き出してからクリップボードにコピー
set TMP_FILE=%TEMP%
etwork_info_tmp.txt

(
  echo 【ネットワーク情報】
  echo 取得日時: %DATE% %TIME%
  echo.
  ipconfig | findstr /i "adapter IPv4 IPv6 Default Gateway"
) > %TMP_FILE%

clip < %TMP_FILE%
del %TMP_FILE%

echo ネットワーク情報をコピーしました。
pause
endlocal

一時ファイルを使うメリット

  • コマンド出力が多い場合でも確実にすべてクリップボードに格納できる
  • 一時ファイル経由で文字コードを制御しやすくなる
  • %TEMP% はWindowsが自動管理する一時フォルダなので、作業後に削除するのが礼儀

実践テンプレート:フォルダ内ファイル一覧をコピーするツール

指定フォルダ内のファイル一覧を整形してクリップボードにコピーするツールです。プロジェクトのファイル構成をドキュメントに貼り付けるような場面で役立ちます。

file-list-copy.bat
@echo off
setlocal

rem 対象フォルダを指定(引数があればそれを使う)
if "%~1"=="" (
  set TARGET=%CD%
) else (
  set TARGET=%~1
)

echo 対象フォルダ: %TARGET%

set TMP=%TEMP%\filelist_tmp.txt

(
  echo 【ファイル一覧】
  echo フォルダ: %TARGET%
  echo 取得日時: %DATE% %TIME%
  echo.
  dir %TARGET% /b /a-d
  echo.
  for /f %%c in ('dir %TARGET% /b /a-d ^| find /c /v ""') do echo 計: %%c ファイル
) > %TMP%

clip < %TMP%
del %TMP%

echo ファイル一覧をコピーしました。
pause
endlocal

このバッチは引数なしで実行するとカレントディレクトリ、引数にパスを指定するとそのフォルダのファイル一覧をコピーします。

使い方
rem カレントフォルダの一覧をコピー
file-list-copy.bat

rem 特定フォルダの一覧をコピー
file-list-copy.bat C:\work\project

実践テンプレート:パスワードや定型文を安全にコピーするバッチ

よく使うパスワード(テスト用)や定型文を安全にコピーし、一定時間後に自動クリアするバッチファイルです。本番パスワードはバッチに直書きしないよう注意してください。

safe-text-copy.bat
@echo off
setlocal

rem コピーしたい定型文(メニューで選択)
echo コピーする内容を選択してください:
echo   1. テスト用ユーザーID
echo   2. 社内向けメールテンプレート
echo   3. よく使うSQL
echo.
set /p CHOICE=番号を入力: 

if %CHOICE%==1 (
  echo(testuser@example.com | clip
  echo テスト用ユーザーIDをコピーしました。
)
if %CHOICE%==2 (
  (
    echo お世話になっております。
    echo 〇〇部の△△です。
    echo.
    echo よろしくお願いいたします。
  ) | clip
  echo メールテンプレートをコピーしました。
)
if %CHOICE%==3 (
  echo(SELECT * FROM users WHERE id = ? LIMIT 1; | clip
  echo SQLをコピーしました。
)

rem 30秒後に自動クリア
echo.
echo 30秒後にクリップボードを自動クリアします...
timeout /t 30 /nobreak >nul
clip < nul
echo クリップボードをクリアしました。
endlocal

注意:本番環境のパスワードをバッチファイルに直接記述するのは危険です。バッチファイルはテキストファイルであるため、誰でも内容を見ることができます。認証情報の管理には専用のパスワードマネージャーを使用し、バッチファイルには平文で記述しないようにしましょう。

PowerShell Set-Clipboard / Get-Clipboard の詳細活用

バッチファイルから PowerShell を呼び出すことで、clip.exe では対応できない高度なクリップボード操作が可能になります。

Set-Clipboard の主なパラメーター

パラメーター 説明
-Value コピーする値を指定 Set-Clipboard -Value "text"
-Path ファイルパスを指定してコピー Set-Clipboard -Path file.txt
-Append 既存の内容に追記 Set-Clipboard -Value "text" -Append
-PassThru コピーした内容を出力に返す Set-Clipboard -Value "text" -PassThru

バッチから PowerShell Set-Clipboard を活用するパターン集

powershell-clipboard-patterns.bat
@echo off
setlocal

rem パターン1: 文字列を直接コピー
powershell -Command "Set-Clipboard -Value 'コピーしたいテキスト'"

rem パターン2: 変数の値をコピー(バッチ変数を展開してPSに渡す)
set MY_TEXT=バッチ変数の値
powershell -Command "Set-Clipboard -Value '%MY_TEXT%'"

rem パターン3: UTF-8ファイルの内容をコピー
powershell -Command "Get-Content 'C:\work\utf8file.txt' -Encoding UTF8 | Set-Clipboard"

rem パターン4: 複数行テキストをコピー(配列として渡す)
powershell -Command "@('1行目', '2行目', '3行目') | Set-Clipboard"

rem パターン5: コマンド出力をコピー(PS側で処理)
powershell -Command "Get-Process | Select-Object Name, CPU | ConvertTo-Csv | Set-Clipboard"

endlocal

Get-Clipboard の活用例

get-clipboard-patterns.bat
@echo off
setlocal

rem クリップボードの内容を表示
powershell -Command "Get-Clipboard"

rem クリップボードの内容をファイルに保存
powershell -Command "Get-Clipboard | Out-File 'C:\work\clipboard-backup.txt' -Encoding UTF8"

rem クリップボードの内容の行数を数える
powershell -Command "(Get-Clipboard).Count"

rem クリップボードの内容をトリム(前後の空白を除去)して再セット
powershell -Command "Set-Clipboard -Value (Get-Clipboard).Trim()"

endlocal

トラブルシューティング

clip.exe やクリップボード操作でよく発生するトラブルとその解決策をまとめました。

症状 原因 解決策
日本語が文字化けする ファイルの文字コードとコードページが不一致 ファイルをShift-JIS保存 または chcp 65001 でUTF-8に切替
貼り付けると末尾に空行が入る echo が末尾に CRLF を付加する PowerShell の Set-Clipboard -Value $var を使う
echo の末尾にスペースが入る echo テキスト の構文 echo(テキスト の構文に変更
clip.exe が見つからないエラー PATH が通っていない環境 フルパス %windir%\system32\clip.exe で指定
複数行コピーで最後の行しかコピーされない echo を個別にパイプしている グループコマンド ( ... ) | clip を使う
Set-Clipboard が使えない 古いPowerShellバージョン(4.0以下) PowerShell 5.1以上に更新、またはclip.exeで代替
ファイルをコピーしようとするとエラー clip ファイル名 という誤った構文 clip < ファイル名 のリダイレクト構文を使う
コピーした内容が貼り付けできない 他アプリがクリップボードを占有している 他アプリを閉じてから実行、またはPowerShell版を使う
変数展開されない(%VAR% がそのまま) setlocal enabledelayedexpansion なしで ! 変数を使用 遅延展開が必要な場合は !VAR!setlocal enabledelayedexpansion を追加

文字化けが発生した場合の診断手順

文字化け診断手順
手順1: 現在のコードページを確認
chcp
→ 932 なら Shift-JIS 環境(日本語標準)
→ 65001 なら UTF-8 環境

手順2: バッチファイルの文字コードを確認
→ VSCode 右下のエンコーディング表示で確認
→ Shift-JIS (CP932) が基本推奨

手順3: コードページとファイル文字コードを合わせる
→ ファイルを Shift-JIS で保存する(推奨)
→ または UTF-8 ファイルは PowerShell Set-Clipboard で処理

改行コードの問題

バッチファイルを macOS / Linux 環境で作成したり、git のライン設定によって LF のみの改行になっている場合、Windows の clip.exe に渡したときに改行が正しく認識されないことがあります。

ポイント:Windows のコマンドプロンプトは CRLF(\r
)を改行として認識します。バッチファイルは必ず CRLF 形式で保存してください。git を使っている場合は .gitattributes*.bat text eol=crlf を指定しておくと安全です。

まとめ

バッチファイルでクリップボードを操作する方法を、基本から応用まで幅広く解説しました。最後に要点を整理します。

この記事のまとめ

  • clip.exe は Windows 標準搭載のコマンドで、パイプ・リダイレクトで渡したテキストをクリップボードに格納する
  • 固定文字列は echo テキスト | clip、変数は echo %VAR% | clip、ファイルは clip < file.txt
  • 複数行コピーはグループコマンド ( echo ... ) | clip を使う
  • 文字化けの主な原因はバッチファイルの文字コードとコードページの不一致。Shift-JIS(CP932)保存が基本
  • UTF-8テキストや高度な操作は PowerShell Set-Clipboard / Get-Clipboard を使う
  • クリップボードのクリアは clip < nul または Set-Clipboard -Value $null
  • 実践では「PC情報ワンクリックコピー」「ファイル一覧コピー」「定型文メニュー」等のテンプレートが役立つ

clip.exe はシンプルながら、バッチファイルの自動化に組み合わせることで非常に強力なツールになります。今回紹介したテンプレートをベースに、自分の業務に合わせてカスタマイズしてみてください。コピー操作をバッチで自動化するだけで、日々の繰り返し作業がぐっと楽になるはずです。