![見出し画像](https://assets.st-note.com/production/uploads/images/172850095/rectangle_large_type_2_2b79dc862e2e70e7641911f61657eecc.jpeg?width=1200)
ダブルクリックで<作成日と通し番号>自動入力のテンプレート (WSL シェルスクリプト バッチ)
<作成日と通し番号> 入りのテンプレートがちょっと必要になったので、シェルスクリプトで作ってみました。
Windows デスクトップ上のショートカット(アイコン)をダブルクリックすると、VSCode が立ち上がって、<作成日と通し番号>入りの新規テンプレートが自動作成されます。シェルの起動にはバッチを使いました。(といっても、コマンドは、wsl ./note_tpl.sh だけですが・・・)
画像イメージはこんな感じです。
![](https://assets.st-note.com/img/1654496292330-jn5VmyfSRG.png)
![](https://assets.st-note.com/img/1654496423930-C6Bm6UhdpU.png)
note やブログの投稿記事の下書きやメモなど、いろいろな用途で活用できると思います。
> 前回の通し番号の続きってなんだったっけ?
> 今日の日付入力するの、だるっ!
こんな方にはうってつけかもしれません!
興味のある方は最後までおつきあい頂けると幸いです。
今回は、以下のサイトを参考にさせていただきました。感謝です。
https://qiita.com/fnaoto/items/5f41f0a2f5554fa38f25
こちらのサイトではシェルの起動に VSCode のタスクという機能を使っています。
準備するもの
VSCode と WSL、PowerShell(コマンドプロンプトでもOK) を使います。
<手順>
1. 作業ディレクトリの置き場所
2. ファイルの簡単な説明
3. bat ファイルのショートカット作成
4. 使い方
<説明>
1. 作業ディレクトリの置き場所
PowerShell を一般ユーザーとして起動します。
初期設定のままなら、C:\Users<ユーザー名> にいると思います。
wsl コマンドを打つと、既定のディストリビューションが起動します。
:/mnt/c/Users/<ユーザー名>$
WSL 上にいますが、作業ディレクトリの場所自体は変わっていません。
("/mnt/c" が、Windows の "C:" にマウントされています)
/mnt/c/Users/<ユーザー名>
今回はここに作業ディレクトリ(note_tpl)を作成します。
ディレクトリ・ファイルの構成
note_tpl/
├── note_tpl.bat
├── note_tpl.sh
└── serial_num.txt
それぞれのファイルの中身は以下のとおりです。
note_tpl.bat
@echo off
wsl ./note_tpl.sh
note_tpl.sh
#!/bin/bash
# ファイル(通し番号保存用)の存在チェック
SERIAL_FILE='serial_num.txt'
if [[ -f ${SERIAL_FILE} ]]; then
serial_num=$(head -1 ${SERIAL_FILE} | sed 's/[ ]//g')
if [[ -z ${serial_num} || ${serial_num} =~ [^0-9]+ ]]; then
echo 'Not a number!'
exit 1
fi
else
echo 1 > ${SERIAL_FILE}
serial_num=1
fi
# テンプレート(tpl)のサンプル作成
TPL_FILE=note${serial_num}.txt
if [[ -f ${TPL_FILE} ]]; then
echo 'TPL_FILE already exists!'
exit 1
fi
post_day="$(date '+%Y年%-m月%d日')"
cat << EOS > ${TPL_FILE}
- 画像(ファイル名)
- 記事タイトル
${post_day}
- 創作ノート #${serial_num}
- 本文
...
EOS
# VSCode で作成したテンプレートを開く
code note${serial_num}.txt
# 通し番号(serial_num)の更新
serial_num=$((serial_num + 1))
echo ${serial_num} > ${SERIAL_FILE}
serial_num.txt
1
ダウンロードできない場合は、コピペしてください。
ちなみに WSL 上からエクスプローラーや VSCode を立ち上げたい場合は以下のようにしてください。(最後のドットを忘れないでください!)
$ explorer.exe .
$ code .
または、
$ cd note_tpl
$ explorer.exe .
$ code note_tpl.bat
あとは、もしシェルスクリプトファイル(note_tpl.sh)に実行権限が付与されていなければ付与します。
(Windows のローカル側でファイルを作成すると、-rwxrwxrwx となるので、今回は必要ないかも)
$ chmod +x note_tpl.sh
確認します。
$ ls -l note_tpl/note_tpl.sh
-rwxrwxrwx 1 <username> <username> 878 6月 3 17:46 note_tpl/note_tpl.sh
準備は以上です。
2. ファイルの簡単な説明
note_tpl.bat
あとでこのファイルのショートカット(アイコン)をデスクトップに作ります。アイコンをダブルクリックすると、シェルファイル(note_tpl.sh)が実行されます。
note_tpl.sh
通し番号の数値を serial_num.txt の一行目から取得して、作成日と通し番号入りの新規テンプレートを作成します。
かりに取得した数値の前後に全角半角の空白文字やインデントが入っていても取り除かれるようにしています。
それ以外の全角数字や文字や記号が入っていれば、エラーになって新規テンプレートは作成されません。
新規テンプレートのファイル名は、note<通し番号>.txt にしています。
新規テンプレートは、note_tpl 内にできます。
最後に次のテンプレート用の通し番号を更新しています。
serial_num.txt
ここに書かれている数字がそのまま新規テンプレートの通し番号になります。初期値は 1 です。もちろん通し番号を途中から始めることも可能です。
例えば、777 の通し番号から始めたい場合は、serial_num.txt に 777 (半角数字)と書き込んでください。
また通し番号を 1 から始めたい場合には、1 と書き込んでももちろんオッケーですが、serial_num.txt を削除してから、デスクトップ上のアイコンをダブルクリックしても、初期値 1 の serial_num.txt が再び自動生成されるようになっています。
※注意
アイコンをダブルクリックしても、新規テンプレートが作成されない場合、serial_num. txt の数値(半角数字)やテンプレートファイル名の重複を疑ってみてください。
3. bat ファイルのショートカット作成
note_tpl/ ディレクトリ内に移動します。
$ cd note_tpl/
エクスプローラーを立ち上げます。
$ explorer.exe .
note_tpl.bat を選択して右クリックします。
「送る」を選択して「デスクトップ(ショートカットを作成)」をクリックすると、デスクトップ上にショートカット(アイコン)ができます。
4. 使い方
デスクトップ上に作成したショートカット(アイコン)をダブルクリックすると、VSCode が立ち上がって、<作成日と通し番号>入りの新規テンプレートが自動作成されます。アイコンのダブルクリックではなく、任意のショートカットキーを割り当てることも可能です
以下のようにします。
デスクトップ上に作成したショートカットを選択して右クリック。
「プロパティ」をクリックして、「ショートカットキー(K):」の項目に任意の英文字を入力して、「OK」をクリックします。
そうすると、「Ctrl + Alt + <任意の英文字>」でも新規テンプレートが自動生成されます。通し番号の途中変更は前述した 2. ファイルの簡単な説明 をご覧ください。
ディレクトリ・ファイルの置き場所の変更
例えば、note_tpl ディレクトリをドキュメントに移動したい場合は、note_tpl ディレクトリをまるごとドキュメント内に移動すればオッケーです。ただし、ショートカット(アイコン)は新たに作り直してください。
注意、今回バッチファイルを簡略化するため、ディレクトリ・ファイルの置き場所は、Windows ローカル(C ドライブ)内に限定しました。
それ以外のディストリビューション内や USB メモリ内では、対応策を取らないとうまくスクリプトが動きません。
<追記 2022/06/14>
note_tpl ディレクトリを既定のディストリビューションのホームディレクトリに置きたい方は、Qiita に関連記事を書いたので参考にしてみてください。
https://qiita.com/akauma16/items/cc077e99416041577336
ちょっとした個人利用に役立ってくれるとうれしいです。
以上です。お疲れさまでした。