ぴよがち

技術的な話をします。みんなで強くなりましょう。

ChatGPT や BingAI に手元のコードをぶち込む用のバッチファイル

ChatGPTなどに手元のコード入力する際に、複数ファイルをコピペしてファイル名を書くのは地味に面倒ですよね。(少なくとも私はそう思います。)

この問題に対処するために、ドラッグアンドドロップで複数ファイルのコードブロックを相対パスつきでコピーできるスクリプトを書いたので共有しておきます。

BingAIの文字数制限突破ワザップ1 と組み合わせて使うのがおすすめです。

使い方

  1. 下のスクリプトを、copyCodeblock.bat みたいな名前で適当に保存する。
  2. コードブロックとしてコピーしたいファイルをドラッグアンドドロップする。
  3. markdownのコードブロックがクリップボードにコピーされるので、ChatGPT や Bing AIなどに貼り付けて、好きなように指示を出し修正してもらう。

以上です。

スクリプト

特定のフォルダからの相対パスも出力する版と、ファイル名のみ版の2種類を用意しときました。

特定のフォルダからの相対パスも出力する版

set baseFolder=src の部分を、好きなフォルダ名に書き換えて使ってください。
なお、UTF-8じゃないソースコードを扱う場合は、chcp 65001 の部分を適当に変えてください。

@echo off
setlocal enabledelayedexpansion

:: Set base folder (update this variable to change the base folder)
set baseFolder=src

:: Set code page to UTF-8
chcp 65001 >nul

:: Check if a file was passed
IF "%~1"=="" (
  echo Usage: Drag and drop one or more files onto this script
  pause
  exit /b
)

:: Create temporary file
set tempfile=%temp%\_codeblock.md
>nul copy nul %tempfile%

:: Process each file
for %%G in (%*) do (
  echo Processing %%G...

  :: Set the full path
  set fullpath=%%~fG

  :: Find the path from the base folder onwards
  for /f "delims=" %%H in ("!fullpath!") do (
    set "relpath=!fullpath:*%baseFolder%=%baseFolder%!"
  )

  :: Replace backslashes with slashes
  set "relpath=!relpath:\=/!"

  echo ^```!relpath! >> %tempfile%
  type "%%G" >> %tempfile%
  echo ^``` >> %tempfile%
  echo. >> %tempfile%
)

:: Copy to clipboard
type %tempfile% | clip

echo Markdown code blocks copied to clipboard!
endlocal

ファイル名のみ版

@echo off
setlocal enabledelayedexpansion

:: Set code page to UTF-8
chcp 65001 >nul

:: Check if a file was passed
IF "%~1"=="" (
  echo Usage: Drag and drop one or more files onto this script
  pause
  exit /b
)

:: Create temporary file
set tempfile=%temp%\codeblock.md
>nul copy nul %tempfile%

:: Process each file
for %%G in (%*) do (
  echo Processing %%G...

  echo ^```%%~nxG >> %tempfile%
  type "%%G" >> %tempfile%
  echo ^``` >> %tempfile%
  echo. >> %tempfile%
)

:: Copy to clipboard
type %tempfile% | clip

echo Markdown code blocks copied to clipboard!
endlocal

  1. 入力欄を右クリック→開発者ツールを開き、<textarea>maxlength を増やすと、英文やソースコードなら5万文字くらいまでは入力可能です。