batファイルからTEXTファイル読込みで

  1. こんばんは、はじめて投稿させて頂きます。
    宜しくお願い致します。
    1年位前から使用させて頂いてます。
    大変、感謝しています。

    表題の件で、
    batコマンドで、
    1. c:\Mery\mery ****.txt
    2. start c:\Mery\mery ****.txt
    3. start /w c:\Mery\mery ****.txt
    の動作が可笑しいように思いますが、
    確認して頂けないでしょうか。

     |  R.N  |  返信
  2. こんばんは、Mery を開発している者です。
    Mery をご愛用いただきありがとうございます。

    動作がおかしいとのことですが、確認してみましたところ 1 のケースは問題なく動作しました。

    2 と 3 はコマンドラインの書き方が間違っているのではないでしょうか?

    start コマンドは、最初の引数が [タイトルにしたい文字列] のようなので、

    2. start "" c:\Mery\mery ****.txt
    3. start /w "" c:\Mery\mery ****.txt

    ↑ こんな感じですかね。

    【参考URL】Windows、「start」コマンドを使ってプログラムを起動する際の注意点 (外部リンク)
    http://piyopiyocs.blog115.fc2.com/blog-entry-759.html

     |  Kuro  |  返信
  3. こんにちは
    返信頂き、ありがとうございます。
    舌足らずだったようで、すみません。

    メモ帳などの場合
    1. c:\windows\natepad ****.txt ------------------- アプリの終了を待つ
    2. start c:\windows\natepad ****.txt --------------    〃   待たない 
    3. start /w c:\windows\natepad ****.txt -----------    〃   待つ

    のような動作をしますが、
    「Mery」の場合、すべて "待たない" で次に進みます.

     |  R.N  |  返信
  4. こんにちは、ご返信ありがとうございます。
    なるほど、そういうことでしたか。

    > メモ帳などの場合
    > 1. c:\windows\natepad ****.txt ------------------- アプリの終了を待つ
    > 2. start c:\windows\natepad ****.txt --------------    〃   待たない 
    > 3. start /w c:\windows\natepad ****.txt -----------    〃   待つ

    1 のケースはメモ帳でもアプリの終了は待たないようですが…。

    3 のケースはメモ帳のように 1 ファイルで 1 プロセスのアプリですと、そのプロセスが終了するのを待たせることができます。

    Mery はシングルプロセスで動作するアプリなので、いくつファイルを開いてもプロセスは常に 1 つですから、ファイルを閉じたタイミングではプロセスが終了しません。(Mery を終了させるとプロセスが終了します)

    なので、Mery でも Mery が起動していない状態で 3 のコマンド (/w) で起動させると終了待ちできます。

    でも、Mery がすでに起動している状態で 3 のコマンドを実行しても、そもそもプロセスが作成されませんので、終了待ちできないというわけです。

    一応、抜け道は用意していて、コマンドラインオプションの「/sp」を付けて起動することで、すでに起動している Mery とは別のプロセスで起動させることが可能となっています。

    ただし、注意点があります。
    ・タスクトレイに常駐はプロセスが終了しないのでダメです
    ・複数のプロセスから 1 つの設定ファイルを使うことになるので、あとから終了したものの設定が上書きされます
    ・例外的な対応なので、動作保証はしていません

    start /w "" mery.exe /sp

    一応、こんな書き方で終了待ちができることは確認しました。
    バッチなどから Mery を起動させて、編集してすぐ閉じる、といった使い方であればおおよそ問題ないかと思います。

     |  Kuro  |  返信
  5. 詳細に説明して頂き、感謝します。
    大まかには、納得できました。

    私は、Jw_cadの外部変形で、batを編集することが多いですので
    その場合の動作について、記しました。

    教えて頂いた、
    start /w "" mery.exe /sp
    に変更して実行してみましたが、結果は同じでした。

    特にそれで困っている、ということではなく、気になったもので、
    質問させて頂きました。
    ありがとうございました。

     |  R.N  |  返信
  6. ご返信ありがとうございます。
    Jw_cad は使ったことがないのですが、確か以前にも Jw_cad でそういった使い方ができるといった話題がフォーラムにあったことを思い出しました。

    関係あるかわかりませんが…
    https://www.haijin-boys.com/discussions/2818#discussion-3620

    > 教えて頂いた、
    > start /w "" mery.exe /sp
    > に変更して実行してみましたが、結果は同じでした。

    お手数をおかけします。
    すみません、上記のフォーラムを見ていると /sp オプションは Ver 2.6.8 以降の機能だったようです。お使いの Mery が Ver 2.6.7 だと /sp オプションは使用できませんでした。

     |  Kuro  |  返信
  7. > 1. c:\Mery\mery ****.txt
    > 2. start c:\Mery\mery ****.txt
    > 3. start /w c:\Mery\mery ****.txt
    > の動作が可笑しいように思いますが、

    横から失礼します、Jw_cad のことはわかりませんが echo abc を追加して実験してみました

    2はMeryが起動した時点でabcが表示されています
    1,3はMeryを閉じるとabcが表示されます

    なので、正常な動作に見えますが、ちょっと話題について行けてないので変なことを言ってたらすみません

     |  シリル  |  返信
  8. 何度も、すみません。

    情報ありがとうございます。

    蛇足でしょうが、
    参考までに、外変(bat)貼り付けてみます。
    これは、単にbatファイル自体を表示するだけのものです。(startの動作確認用)

    @REM Meryテスト(startコマンド)
    @echo off
    goto %1
    REM #jww
    REM #cd
    REM #hm|start 無 (L)|start 有 (R)|start /w|start 無 (メモ帳)|start 有 (メモ帳)|start /w (メモ帳)|
    REM #hc Meryテスト(startコマンド) ----- R.N
    REM #:1
    REM #:2
    REM #:3
    REM #:4
    REM #:5
    REM #:6
    REM #hr
    REM #e
    :1
    C:\Mery\Mery %~nx0 && goto end
    :2
    start "" C:\Mery\Mery %~nx0 && goto end
    :3
    start /w "" C:\Mery\Mery %~nx0 && goto end
    goto end
    :4
    c:\windows\notepad %~nx0 && goto end
    :5
    start "" c:\windows\notepad %~nx0 && goto end
    :6
    start /w "" C:\windows\notepad %~nx0 && goto end
    :end

    (外変メニューの前3つが "Mery" で、後3つが "メモ帳"で開いた場合です)

     |  R.N  |  返信
  9. すみません ↓!

    作者様
    Kuro さんのレスと取り違えたようで、ごめんなさい。

    Kuro さん
    参考にさせて頂きます。
    すみませんでした。

     |  R.N  |  返信
  10. 【送信積み】
    :3
    start /w "" C:\Mery\Mery %~nx0 && goto end
    goto end

    【変更】
    :3
    start /w "" C:\Mery\Mery %~nx0 && goto end

    ダブってました。
    失礼しました。

     |  R.N  |  返信
  11. >> シリル さん
    ご協力ありがとうございます。

    恐らく、すでに Mery が起動している状態でバッチを動作させたときに終了待ちされないのだと思います。

    そこで /sp (セパレートプロセス) オプションをご紹介したのですが、実は、Ver 2.6.7 (正式版) ではバグがあって /sp オプションが動作しないという… ^^; Ver 2.6.8 からは直っています。

    >> R.N さん
    たびたびすみません、情報ありがとうございます。

    いただいた bat ファイルで確認してみましたところ、当サイトで掲載している最新版 Ver 2.7.4 ですと下記のように /sp オプション指定で正常に終了待ちできました。

    :1
    C:\Mery\Mery /sp %~nx0 && goto end
    :2
    start "" C:\Mery\Mery /sp %~nx0 && goto end
    :3
    start /w "" C:\Mery\Mery /sp %~nx0 && goto end

    Ver 2.6.7 以降、現在まですべてベータ版という表記になっていますが、プログラム自体は正式版もベータ版も違いはなく、Ver 2.6.7 以降、多くのバグ修正や機能改善がされていますので、2.6.7 よりは安定しています。

     |  Kuro  |  返信
  12. Mery64_Ver2.6.7にVerUpし、確認しました。
    解決できました ↑ ^^^^---

    皆さん、どうもありがとうございます。
    今後ともよろしくお願い致します。

    作者様、
    お手数お掛けしました。
    親切に対応して頂き
    感謝です。

     |  R.N  |  返信
  13. 書き忘れました----

    オプション(/sp)なしで"OK"でした。

     |  R.N  |  返信
  14. > オプション(/sp)なしで"OK"でした。
    Mery を起動させていない状態でバッチを走らせた場合は /sp なしでも OK です。
    Mery が起動している状態ですと /sp オプションを付けないとダメだと思います。

     |  Kuro  |  返信
  15. かと思いましたが---

    動作不安定です?

     |  R.N  |  返信
  16. > Mery が起動している状態ですと /sp オプションを付けないとダメだと思います。

    Meryは、重複起動していませんが---?

     |  R.N  |  返信
  17. > 動作不安定です?

    Mery Ver 2.6.7 ではなく、ブログのほうで公開している Ver 2.7.4 が最新です。Ver 2.6.7 は /sp オプションが使用できません。

    また、終了待ちをさせる場合は /sp オプションを付けないと正しく動作しないと思います。

    /sp オプションをつけた場合、タスクトレイの常駐はオフにしていただく必要がございます。

    あと、プロセスが別 (多重起動) なので別のプロセスで起動している Mery にタブを移動させたりすることはできません。

    他にも、例えば別プロセスで起動している Mery 側でマーカーを登録したり、マクロを登録したりしても、他のプロセスで起動している Mery には反映されない、などの仕様上の制限事項もございますが、この辺りは動作保証外となりますのでご了承くださいませ。

     |  Kuro  |  返信
  18. > > 動作不安定です?
    >
    > Mery Ver 2.6.7 ではなく、ブログのほうで公開している Ver 2.7.4 が最新です。Ver 2.6.7 は /sp オプションが使用できません。

    了解です。

    > また、終了待ちをさせる場合は /sp オプションを付けないと正しく動作しないと思います。

    Ver 2.7.4をインストールし、確認中です。

    > /sp オプションをつけた場合、タスクトレイの常駐はオフにしていただく必要がございます。

    了解です。

    > あと、プロセスが別 (多重起動) なので別のプロセスで起動している Mery にタブを移動させたりすることはできません。

    了解しました。

    > 他にも、例えば別プロセスで起動している Mery 側でマーカーを登録したり、マクロを登録したりしても、他のプロセスで起動している Mery には反映されない、などの仕様上の制限事項もございますが、この辺りは動作保証外となりますのでご了承くださいませ。

    分かりました、
    ご丁寧に、ありがとうございます。

     |  R.N  |  返信
スポンサーリンク