ChatGPT や BingAI に手元のコードをぶち込む用のバッチファイル
ChatGPTなどに手元のコード入力する際に、複数ファイルをコピペしてファイル名を書くのは地味に面倒ですよね。(少なくとも私はそう思います。)
この問題に対処するために、ドラッグアンドドロップで複数ファイルのコードブロックを相対パスつきでコピーできるスクリプトを書いたので共有しておきます。
BingAIの文字数制限突破ワザップ1 と組み合わせて使うのがおすすめです。
使い方
- 下のスクリプトを、
copyCodeblock.bat
みたいな名前で適当に保存する。 - コードブロックとしてコピーしたいファイルをドラッグアンドドロップする。
- 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