【不具合】コマンドプロンプトから渡すファイルパスが通らない

  1. 先日エレベーターに乗ったとき全部のボタンが押されていました。

    お久しぶりです玄米茶です。

    やられたwwwってクスリとしたのですが。さすがに5階ほど降りた時点でイラッてなりました。あーなんか覚えてないけどリセットの裏技とかあったなぁ。覚えておけばよかったなぁ。なんて事を考えたりしました。
    しかし、別に急ぐわけでもないしこのままイライラするのは嫌なので、少し遅れても隣のエレベーターに移ろうと一度降りました。
    程なくして降りてきたエレベーターに乗り込んだら、やっぱり全部押されてました。

    ……ここ小学生が入ってくるビルじゃないんですけどね。

    押した人間の年齢や取り巻く環境・動機なんかに思いを馳せると、触れちゃいけない他人の心の闇を垣間見られる気がする階段風エレベーター話いかがでしたか?

    もしも同じ体験をすることがあっても、

        もしかしてエレベーターホールですれ違ったあの人が……
        あれ? あのとき新入社員が遅れて部屋に入ってきて……
        そういえば、しかめっ面の上司と廊下ですれ違ったんだよな……

    なんて犯人探しをしてはいけませんよ。忘れましょう。人の中の闇と対峙するハメになります。階段風エレベーター話が、あなたが主人公の本当の怪談話になってしまうかもしれませんからね。
    いいかい? 何も無かった。そこでは何も起こらなかったんだよ。いいね。

    前置きが長くなりましたが不具合報告です。
    ポータブル化したMeryで、一時的にMeryフォルダにパスを通して作業していたところ、不都合な現象と遭遇したので報告します。

    【不具合内容】
    コマンドプロンプトから渡すファイルパスが通らない。
    OS: Win7 64bit
    Mery build: 2.3.0 5095

    【再現準備】
    Meryフォルダにパスを通して以下のフォルダ構成を用意する。

    aaa
     └ a.txt
    bbb
     └ b.txt

    【再現手順】
    Meryが起動していない状態でコマンドプロンプトから以下の操作を実行

    1. aaaフォルダ内へ移動し a.txt を開く
    ```
    cd (aaaフォルダ)
    mery a.txt
    // Meryが起動しa.txtが開く
    ```

    2. Meryは閉じずそのままの状態で bbbフォルダへ移動しフルパスで b.txt を開く
    ```
    cd (bbbフォルダ)
    mery "(b.txtのフルパス)"
    // これも問題なく開く
    ```

    3. 今度はファイル名のみを指定して再度 b.txt を呼び出す。
       Meryは閉じず b.txt のみ閉じるか a.txt を前面に表示しておくと、
       開いたか確認しやすくなります。
    ```
    mery b.txt
    // b.txtが開かずaaaフォルダにb.txtを作る旨を尋ねられる

    // とりあえず今はキャンセルし次にaaaフォルダからの相対パスで指定
    mery ..\bbb\b.txt
    // b.txtが開く!
    ```

    どうやら初回起動時のディレクトリパスを保持して、引数のパスと合成する仕様が問題になっているようです。

    慣れない事をしていたので問題の切り分けに手間取り、この解釈でいいのかもよく分かってません。また、設定方法が間違ってたり環境依存による現象かもしれません。
    再現できない場合はご容赦を。
    それでは!

     |  玄米茶  |  返信
  2. > 先日エレベーターに乗ったとき全部のボタンが押されていました。

    ありますあります.
    私も割と高階層なので,途中階全部停まるとかイラッときますね.

    さて本題のパスの件ですが,
    > どうやら初回起動時のディレクトリパスを保持して、引数のパスと合成する仕様が問題になっているようです。
    というのが仕様なようですね.
    ただ Mery がパスを保持して合成して……というのではなく,カレントディレクトリで Windows
     が勝手にやっていることですね.

    困るようでしたら,ちょっと手間ですが対応はできるので検討してみてください.
    https://www.haijin-boys.com/discussions/2204

     |  ks  |  返信
  3. > 先日エレベーターに乗ったとき全部のボタンが押されていました。

    ありますw

    新入社員で思い出しましたが、エレベータに乗ろうと待っていたところドアが開き、何もせずに真ん中に堂々と乗っている新入社員と、操作パネルの前で開くボタンを押してくれている CEO の姿に小便ちびりそうになったことはありますねw

    > ただ Mery がパスを保持して合成して……というのではなく,カレントディレクトリで Windows
    >  が勝手にやっていることですね.

    ですね。Mery を起動したときにカレントディレクトリが決まって、そこから先はノータッチです。

    すごく昔のバージョンではファイルを開くたびにそのフォルダをカレントディレクトリにしていたこともありますが、これをやっちゃうとカレントディレクトリになっているディレクトリを削除することができなくなってしまうという副作用がでますので、今はやめています。

    カレントディレクトリのパスを覚えておいてファイルを開く前にそこにカレントディレクトリをセットして、ファイルを開いたらカレントディレクトリを戻す、のようなことをすれば回避できるかもしれませんが、ちょっと今 Mery の大幅改修中なのでひとまずそれが落ち着いてから検討させてください。

     |  Kuro  |  返信
  4. ○ksさん へ

    ksさんおひさしぶりです。

    > 私も割と高階層なので,途中階全部停まるとかイラッときますね.

    もし頻繁に遭遇するなら気をつけてくださいねw

    > 手間ですが対応はできるので検討してみてください

    ksさんは何でも作ってますね。なんだか「こんな事もあろうかと……」っていう人みたいですよ。
    見透かされすぎて、用意されている地雷を全て踏み抜いている気分です。踏む前に教えて下さいよ(涙。
    とりあえず開くだけの予定なのでバッチの方を準備しておくことにします。さらにマクロ版が準備されているってことは…… ここから一歩先ですか? 二歩先ですか? いずれ使うことになるんでしょうねw

    ○kuroさん へ

    > 操作パネルの前で開くボタンを押してくれている CEO 

    乗りたくねぇーwww
    でも私も歳をとったのか、自分に関係なければそういう風景をほほえましく眺めるようになりました。
    むしろニヤニヤかもw

    > Mery を起動したときにカレントディレクトリが決まって、そこから先はノータッチです。

    騒ぎ立ててごめんなさい、Windowsの機能だったのですね。
    遙か昔にsakuraエディタだったかで同じような作業した薄ーーい記憶があったのでそれが標準動作かと勘違いしてました。あれもきっとエディタ側でなんかごにょごにょしてたんでしょうね。

    > ちょっと今 Mery の大幅改修中

    ちょーーッ! それならお願いしたい機能が!! 欲しいマクロコマンドも! 今なら間に合う?
    とりあえず、またの機会にしておきますw
    改修頑張ってください。
    それでは。

    ○残念! この落し穴はオレ専用! これ以上この落し穴に入らないで下さい。

    一応検索で来られる方用に関連しそうな初心者のメモを残しておきます。

    * Meryでコマンドプロンプトから引数としてファイルパスを渡す際、使用できる文字

    ```
                                使用可    使用不可
    ディレクトリの区切り文字 :   \,\\        / (引数のオプション指定に使うからダメ)
    パスを括る文字           :   "           ' (ファイル名に使える文字で括るのはダメ)

    // ○
    mery c:\aaa\a.txt
    mery "c:\aaa\a.txt"
    mery "c:\\aaa\\a.txt"
    // ×
    mery "c:/aaa/a.txt"   // ←私はこれを必死に叩いていた
    mery 'c:\aaa\a.txt'
    ```

     |  玄米茶  |  返信
  5. > 騒ぎ立ててごめんなさい、Windowsの機能だったのですね。

    機能というか、Mery は何もしていないのでどうにもなってない感じですねw
    コマンドラインからの使用に力を入れているエディタでは、ちゃんとゴニョってるんだと思います。Mery も対応できなくはないと思いますが、苦手なんですよね、コマンドプロンプト…

    > ちょーーッ! それならお願いしたい機能が!! 欲しいマクロコマンドも! 今なら間に合う?

    締め切りましたッ!w

    > 改修頑張ってください。

    ありがとうございますw
    今回の新機能は結構派手にいってみました!しばらくはバグ取りに追われそうです…

     |  Kuro  |  返信
  6. 玄米茶さん,久方ぶりです.

    > もし頻繁に遭遇するなら気をつけてくださいねw
    残念ながら頻繁なんですよね
    車イスの方向けの必ず停まるボタンを皆多用します故……

    > ksさんは何でも作ってますね。なんだか「こんな事もあろうかと……」っていう人みたいですよ。
    大概は「コレどうすればいい?」「こんなのないですか」をパッと解決できそうならする,という感じですね.
    まれに自分用のがそのまま転用できたりもしますが.

    なので
    > 見透かされすぎて、用意されている地雷を全て踏み抜いている気分です。踏む前に教えて下さいよ(涙。
    というのは流石に穿ち過ぎですw
    ただ結局困るところは皆さん一緒なのか,過去の Forums や某スレ探すと同じような相談が載ってたりするんですよね
    例:関連付けがおかしい,設定が消えた,

    > とりあえず開くだけの予定なのでバッチの方を準備しておくことにします。さらにマクロ版が準備されているってことは…… ここから一歩先ですか? 二歩先ですか? いずれ使うことになるんでしょうねw
    マクロ版の方は割と黒魔術使っているので,既に自分でも解読不能であったりw
    よほどのことがなければ bat 版推奨です……
    ソースはあるのできっと誰かが整備してくれることを祈っています.

     |  ks  |  返信
  7. > マクロ版の方は割と黒魔術使っているので,既に自分でも解読不能であったりw

    どうやったらマクロでこんなことできるんだ!と度肝を抜かれるものがあります、まさに黒魔術!w
    ks さんの技術力に甘えてしまって Mery 側での対応を放置しているケースもいくつかあり申し訳ない限りです…

    ----

    ところで、新バージョンの公開作業が落ち着いたので冷静に考えてみましたところ、玄米茶さんの指摘されている動作に関して、私、仕様的な面においてですが少し勘違いをしていたようです。

    sakura エディタさんは exe を起動するたびにプロセスが分かれているので、何もしなくてもカレントディレクトリは exe 起動時に勝手にプロセスごとに割り当てられるのでしょうね。

    Mery はプロセスが 1 つなのでコマンドプロンプトから起動すると初回起動時はカレントディレクトリが割り当てられますが、すでにプロセスが起動していると Windows 側からカレントディレクトリは変更してもらえないので、ファイル名だけ引数で飛んできても解決できないんですね。

    単一プロセスなエディタはどう対応しているのか、私、気になります!
    調査してみますね。

     |  Kuro  |  返信
  8. 単一プロセスなテキストエディタをいくつか調べてみました。
    手近な Delphi 製で参考になりそうなものがあれば良かったのですが…

    以下、コマンドラインから相対パスを移動しつつファイルが開けるかどうか、です。

    E○Editor : 正常に開ける
    真魚 : 2 度目以降は開けず (Mery と同じ)
    JmEditor : 対応してません
    EditBone : 対応してません

    単一プロセスではありませんが sakura エディタや秀○さんは大丈夫ですね。

    で、諦めるしかないのか… と思っていたところ、なんと Mery 1 系は対応していましたw
    ソースを見たら、がんばった形跡が!w (といっても 3 行ほどのコードですが)

    2 系に移植する際に「このコードって何だっけ?いらないかな?」と思って消しちゃったんだと思います(ぉぃ
    ベータ版という名目のもと、 Mery 2.4.0.5700 にこっそり更新しておきました。お試しくださいませ。

     |  Kuro  |  返信
  9. Mery 2.4.0.5700(beta)にてこの件が対応済みな事を確認しました。
    オプションの引数指定も動作している事が確認できました。
    ありがとうございました。
    実はver.1系では対応していたなんて盲点過ぎますw

    元々他人様のPCで作業する時に関連付けを弄るのも気が引けてプロンプト使う事にしたんです。
    それがバッチの補助でサクサク開けるので、既に自分のPCでの作業にも使いまくりです。
    それが今回正式対応ですから、もうアイコンクリックしている場合じゃねぇ! ってな具合です。

    ただ残念な事に、メインPCのMeryさんはbeta版という事もあって未だ更新していませんので、しばらくはまだこのままバッチで行くことになりそうです。
    それでは正式版を心待ちにしております。

     |  玄米茶  |  返信
  10. 動作確認ありがとうございます。

    > 実はver.1系では対応していたなんて盲点過ぎますw

    私もすっかり忘れてしまっており、「いやー無理っスわーw」的な対応をしてしまいすみませんでした(汗

    > 元々他人様のPCで作業する時に関連付けを弄るのも気が引けてプロンプト使う事にしたんです。

    なるほどです~。
    他人の PC に Mery が仕込まれていく様子は、開発者からすると胸アツですw

    夢は、別の会社の人がプレゼンにやってきてプロジェクターでプレゼン中に、使ってるテキストエディタが Mery、っていう風景を見ることですね。まだ他社の人で Mery 使ってる人は見た事ありません…

    > それでは正式版を心待ちにしております。

    そうですね。しばらくかかるかもしれませんが、なるべく安定したものを作り上げられるよう努力いたします。
    (それなりに…w のんびりと… ぉ)

     |  Kuro  |  返信
スポンサーリンク