windowsにてコマンドプロンプトにてサクラエディタに対してパスを渡して開く という動作を行いたかったのですが
サクラエディタのexeが入っているディレクトリにパスを通す
というのが実行ファイルごとにいろんなディレクトリにパスを通すというのが何か引っかかったので、一つのディレクトリにパスを通して、そこにexeのショートカットを置くことで解決できないかな?
とふと思いショートカットをおいたのですが細かいところでうまく行かず少し悩んだので記事に残そうと思いました。
↑ 各ディレクトリにパスを通せば済む話ですし、このやり方で運用するのが適切かどうかは知りません。参考までに「へ~」と思って見ていただけたら幸いです。
try1 シンプルにショートカットを置いてみた
exeのショートカットを置いてみましたがうまいことコマンドプロンプトから実行ができませんでした。
原因
見た目上は拡張子は表示されていませんでしたがファイルパスとしては sakura.lnk
となっています。
パスを通しているものを実行するときに拡張子を省略する場合は
環境変数のPATHEXTに拡張子の登録を行っているもののみ省略を行うことができるようになっていた
try2 PATHEXTに.lnkを追加し再度チャレンジ
引数で渡した相対パスでのファイルが開かれるのではなく、ショートカット先のexeのディレクトリからの相対パスとして評価された
(絶対パスで渡せば問題なく開かれる)
原因
たぶんショートカットだとそうなるのかな?と思います
ということで他の方法を模索
try3 batにしてパスをもらい渡してみよう
"C:\programs\sakura\sakura.exe" "%1"
開けた!!
が、コマンドプロンプトがサクラエディタを閉じるまで待たされる・・
try4 startを使う
コマンドの待ちを行うかどうかというのがcallかstartかで違うらしい。startを使えばいいとのこと
=> うまく行かない(エクスプローラが立ちあがり別のコマンドプロンプトも開かれた)
をみるとstart ""
とあえて第一引数に""
を入れると良いとのこと
try5 start ""
うまく開かれた!!
が、あとはコマンドプロンプトに開いたファイルパスが表示されるため@echo off
にてコメント出力を切る
結論
ショートカットではなくbatファイルならできました。
@echo off
start "" "C:\programs\sakura\sakura.exe" "%1"
これでうまく行きました
本来は普通にパスをそれぞれ通すべき なのかとは思いますが、この機会にbatファイルのお勉強になったのでこれはこれで良し!