コマンドプロンプトからサクラエディタを起動できるようにしてみた後編
MinGW-w64とmsys2とサクラエディタで作る、C言語開発環境 おまけ
~コマンドプロンプトからサクラエディタを起動できるようにしてみた~
テキストエディタ(サクラエディタ、メモ帳など)でバッチファイル(batファイル)を開く方法についてはこちらのリンク先の記事をご覧ください。(2017年9月3日 14:00 リンク追加)
※この記事は、コマンドプロンプト上からサクラエディタを起動するためバッチファイルを作成している記事です。
MinGW-w64とmsys2とサクラエディタで作る、C言語開発環境ではgccを打ってC言語のコンパイルができるように環境を整えました。
コマンドプロンプトからコンパイルできるようになりました。これでc言語の開発はとりあえずできるようになりました。
お次はコマンドプロンプト上からサクラエディタでソースコードの作成が行えるようにします。後編でははbatファイルの作成を行います。
どこまで引っ張るんやねん!!とか言わないお約束。
batファイルの作成
batファイルの要件
今回作成するbatファイルに求められるのは以下の点です。
・コマンドプロンプトからサクラエディタを開ける。
・開く際に、ファイル名を指定できる。
・すでに作成されているファイルを指定した場合はそのファイルを開く。存在しないファイル名を入力した場合は指定したファイル名で新規作成してから開く。
完成品は下にあるのでソースだけほしい場合はそちらをどうぞ。なお、batファイルの作成とご利用は自己責任でお願いします。ご利用は計画的に。
コマンドプロンプトからサクラエディタを開く
コマンドプロンプトからサクラエディタを開けるようにします。
環境変数のPathにサクラエディタ本体(sakura.exe)のある絶対パスを追加してもOKですが、せっかくなのでbatファイルを作成します。
まず、サクラエディタ本体がインストールされているディレクトリを探します。
筆者は「C:\Program Files (x86)\sakura」というディレクトリに入っていました。この値(C:\Program Files (x86)\sakura)をコピーしておきます。
次に、コマンドプロンプトを開き、batファイルを作成したいディレクトリに移動します。batファイルを作成したディレクトリからサクラエディタを起動できるようになります。
※よくわからない場合はコマンドプロンプトが開いたらそのまま以下のコマンドを入力します。
notepad sakura.bat
ファイルを作成するか聞かれるのではいを選択します。
※何も聞かれない場合はすでに「sakura.bat」というファイルがあり、そのファイルを開きます。その場合は何もせずに閉じて、「sakura」以外の名前で作成してください。その場合、以降の「sakura」となっている部分は適宜読み替えてください。
ファイルを開いたら、先ほどコピーした値を””でくくって入力します。入力したら末尾に改行を入れて、上書き保存します。
※改行はいらないかもしれませんが、念のため入力します。
"C:\Program Files (x86)\sakura\sakura" (末尾に改行を加えてください。)
保存出来たらコマンドプロンプトに戻り以下コマンドを入力します。
sakura
正しく設定できていると、サクラエディタが開きます。
これでコマンドプロンプトからサクラエディタを開くことができるようになりました。
※※※開かない場合は以下のような原因が考えられます。※※※
「’ファイル名’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示された場合
・ファイル名(sakura.bat)を間違えている
・コマンド(sakura)を打つ際に打ち間違えている
それ以外の場合
・バッチファイル(sakura.bat)の中身が間違えている
開く際にファイル名を指定する
ファイルを開く際に、ファイル名を決められるようにします。
具体的には、以下のコマンドを入力すると、指定されたファイルが開くようにします。
sakura ファイル名
先ほど作った「sakura.bat」のファイルに一部つけ足します。赤○で囲まれている部分がつけ足された部分です。
中身を抜き出すと以下の通りです。半角スペースが入っている個所があるので注意してください。
"C:\Program Files (x86)\sakura\sakura" "%1" (末尾に改行)
これは「C:\Program Files (x86)\sakura\sakura」を「%1」という引数付きで起動するコマンドになります。
引数については下に説明を書きましたが、よくわからなければスルーしましょう。
引数
※よくわからない場合はいったん読み飛ばしましょう。※
コマンドプロンプトからファイルを起動する場合には”引数”と呼ばれるものを指定することが可能です。例えば、今回は開くファイルを指定するためのファイル名を打ち込んでいますがこのファイル名も引数です。「sakura ファイル名」の「ファイル名」の部分です。
引数は複数指定することも可能ですので、”%番号”の形で何番目の引数か区別しています。
サクラエディタの場合は、最初の引数で開くファイルを指定することが可能です。
これで無事ファイル名を指定できるようになりました。ここまでで十分ですが、このままでは下のような問題点があります。
1.sakura hoge.txtでhoge.txtを作る
2.hoge.txtを編集し、保存しないで閉じる
3.hoge.txtがなくなっている
保存せずに閉じてしまうとファイルが作成されていないことになり、消えてしまいます。
この現象は新規にファイルを作った時にはこの現象が起こりますが、既存のファイルを開いた場合は閉じる際にはダイアログが出てきます。
こんなやつ↓です。
このダイアログが出れば、保存し忘れる可能性は下がります。そこで新しくファイルを作る場合はファイルを新規作成してそのあとでサクラエディタから開くようにします。
ファイルを新規作成してから開くようにする
※先に書いておきますが、最後まで読んでから実行してくださいね。自己責任ですよ(^^
空のファイルを新規作成するにはコマンドプロンプトから以下のコマンドを入力します。
type nul > "ファイル名"
typeコマンドの本来の役割はファイル作成ではありませんが、今回はこれを利用します。なお、上記のコマンドではファイル名で指定した名前で、中身が空のファイルが作成されます。
例えば
type nul > "hello.txt"
と入力すると、中身が空っぽのhello.txtというファイルが作成されます。
では、これをもとにして「sakura.bat」を以下のように改変しましょう(^^
type nul > "%1" "C:\Program Files (x86)\sakura\sakura" "%1" (末尾に改行)
これで、間違えてファイルを消す心配はありませんね(^^
このまま動かすと悲劇が起こるのはだまっておこうw
ファイルの中身が消える・・・
実はこのままだと、とんでもないことが起こります。
試しに「sakura test.txt」で新しくファイルを作り、適当に中身を書いて保存してから閉じてください。
保存出来たら、もう一度「sakura test.txt」で開いてみましょう。。。
するとあら不思議、先ほど書いたはずの中身がすっかり消えている。。。w
先ほどのコマンドの構造は、(左辺) > (右辺)となっていました。実はこれだと、「左辺の中身を右辺に出力(上書きと思えばOK)しなさい」という命令です。
「type nul」は「中身がない(0バイト)のファイル」ですので、「type nul > ファイル名」では中身がないファイルをファイルに上書きすることになります。そりゃ中身も吹っ飛びますってw
すでにあるファイルはそのまま開くようにする
この問題を回避するために、条件分岐(IF)を利用します。条件分岐とは、ある条件Aならこっち、ある条件Bならこっち、ある条件Cなら・・・といったように処理を分ける方法です。
最も簡単な形は以下の通りです。
If 条件 ( 条件に一致したときの処理 )
今回の場合は
If ファイルがないとき ( ファイル作成コマンド実行 )
となればよさそうです。
そこで「sakura.bat」を以下のように修正します。
If Not Exist "%1" ( type nul > "%1" ) "C:\Program Files (x86)\sakura\sakura" "%1" (最後に改行をお忘れなく)
「Not Exist ファイル名」でファイルが存在しなければという条件になります。この条件に当てはまったときだけ()の中の処理(ファイルの新規作成処理)が実行されます。
今回は引数名に指定されているファイルがない場合にファイルを作成という形にしたいため、ファイル名の部分に「”%1″」を指定します。
これでファイルが無ければ新規作成、あった場合はそれを開くという処理ができました。
めでたくsakura.batが完成です。
利用方法
コマンドプロンプトを開き、sakura.batを作成したフォルダに移動します。その後
sakura (ファイル名)
と入力すれば、ファイル名で指定したファイルが開きます。
例えば、hello.cというファイルを開きたい場合は
sakura hello.c
と入力すればOKです。
完成したbatファイル
完成したbatファイルのソース
完成したbatファイルの中身はこちらです。説明がほしい場合は記事を読み返してみましょう。なお、上でも書きましたが、ご利用は自己責任で。
If Not Exist "%1" ( type nul > "%1" ) "C:\Program Files (x86)\sakura\sakura" "%1"
参考文献
今回の内容を書くにあたって参考にさせていただいたホームページです。
If – DOS コマンド一覧 – Programming Field
Windows のコマンドプロンプトで空ファイルを作成する方法
筆者のおすすめ記事
C言語(Windows環境)からMySQL #1 環境導入編
C言語練習問題一覧
C言語でBINGOを作ろうシリーズ記事一覧
バッチファイルをテキストエディタで開く方法
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載