一年近く前に書いた現在のディレクトリ以下にあるファイルのパス一覧を取得は、現在の業務で頻繁に使用しているコマンドだが、めんどくさい問題が2点あった。
- 本当はディレクトリの区切り文字をバックスラッシュじゃなくてスラッシュで取得したい。
- コマンドを実行したあとに別のファイルにコピペしなければいけない。
これまでは、コマンドの実行結果を矩形選択からコピーして、別のファイルにペーストして、それをGvimで置換処理するという作業をしていたが、一年近くこんなことを続けててそろそろ楽をしたくなってきたので、楽できるバッチファイルを書いた。
filelist.bat
::: カレントディレクトリ以下にあるファイルを全て取得
::: 相対パスでリスト出力する
@echo off
setlocal enabledelayedexpansion
set BSLASH=\
set CD_S=%CD%%BSLASH%
set RESULT=
for /f "usebackq tokens=*" %%i in (`dir /s /b /a-d`) do (
set RESULT=!RESULT!^
%%i
)
set LIST_SUB=!RESULT:%CD_S%=!
set /p LIST=!LIST_SUB:\=/!<nul
endlocal
flcp.bat
::: filelistの結果をクリップボードにコピーする
@echo off
call filelist
call filelist | clip
echo;
echo;
echo ファイル一覧をクリップボードにコピーしました。
これらのファイルを、環境変数PATHが通っている任意のディレクトリに置く。
あとはファイル一覧を取得したいディレクトリをShift+右クリックでコマンドプロンプトを開き、上記のどっちかを実行するだけ。
filelist.batはスラッシュ区切りのパス一覧を標準出力するだけ。
flcp.batはfilelist.batの結果をクリップボードにコピーしてくれる。
これからはflcpを実行して任意のテキストファイルにペーストするだけになり、時間の短縮に成功した。