1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

コマンドプロンプトにて一箇所にパスを通してその中にショートカット(?)を置き実行したい

Posted at

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"

これでうまく行きました :smile:

本来は普通にパスをそれぞれ通すべき なのかとは思いますが、この機会にbatファイルのお勉強になったのでこれはこれで良し!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?