最終更新日:
2024年4月2日
このページの目次
前書き
少しマニアックな事を説明するので、TextRunRun の事を知らない方はついていけないかもしません。
ちょっとでもついていけないと判断した場合は、このページはとばしてください。
このブログ形式のものを始めてからいきなりマニアックな事の説明をしますが、どこかで例をだして説明しておきたいと思っていた事なのでここで説明しておこうと思いました。
説明したい事は、「空白のあるファイルパスの設定」と「絶対パスに変換する設定」に関してです。
TextRunRun には 設定 のウインドウがあります。
その中の項目に
空白のあるファイルパスを自動的に調べて対応する、という処理をしない
という設定があります。
今回はこれの事について説明しますが、これ以降はこの事を
空白の設定 と表現します。
それと、半角スペースの事を「 空白 」とだけで表現させてください。
次に
引数の相対パスを絶対パスに変えてから実行する、という処理をしない
という設定についても説明します。
これ以降はこの事を 絶対パスの設定 と表現します。
空白の設定
この設定は、半角スペースがあるファイルパスが記入されていた場合、それを一つの括りとして認識するかどうかの設定です。
この設定にチェックを入れると「その認識させる処理」を解除します。
( 何もしなくなる。 )
つまり、初期の設定では、「一つの括りとして認識」する処理が自動的に働く様に設定されています。
「認識する場合」と「認識しない場合」の違いを説明しておきます。
smoopy というソフトを例に使って説明します。
外様のソフト
TextRunRun は、ファイルパスに空白がある場合は「どこまでがファイルパスでどこからがパラメーターか」を識別できなくなります。
TextRunRun にかぎらず、コマンドランチャーなどのソフトで思ったように動作しない場合はこれが原因である事が多いと思います。
補足
この事への対処法として、ファイルパスを ” ” で囲むという方法があります。
このファイルパスを ” ” で囲むという方法は TextRunRun に限らず有効な方法です。
●
空白のあるファイルパスを認識する場合とそうでない場合の例
以下に例を出して説明します。
spa ce といった空白のあるフォルダを使っている例で説明します。
C:\spa ce\smoopy\smoopy.exe
テキスト に記入して使う例です。
空白があるファイルパスを記入しても、ファイルパスのみの記入なら問題なく認識して実行できます。
次は引数をつけた例です。
C:\spa ce\smoopy\smoopy.exe readme.txt
引数に readme.txt をつけています。
Alt + o のキーで実行してみてください。
実行しようとしている内容を確認できます。
Alt + o で確認してみたり、実行してみると分かる事ですが、
空白の設定 にチェックがある場合と、チェックを外した場合とで違いがでる事が確認できます。
ちなみに、 設定 のウインドウは、 OK のボタンを押さないと変更を反映しません。
空白の設定 にチェックがある場合は以上の忠告がでるだけで終わる事になるはずです。
ファイルパスとして認識できてるか、できてないのかの違いを確認できるのではないでしょうか。
補足
ついでに、 空白があるファイルパスを ” ” で囲む事ことで、認識できるか、できないかを、 Alt + o で確認してみてください。
それによる違いも確認できるのではないでしょうか。
空白の設定 が、
「チェックの時( 認識しない状態 )」は、空白があるファイルパスがあるなら、そのファイルパスだけならまだ認識可能ですが、パラメーターなどが含まれていたらファイルパスとして認識できなくなるという事がこの実験で分かると思います。
●
どの場合で 空白の設定 が動作するか
この 空白の設定 による、「空白のあるファイルパスを一つの括りとして認識する処理」が動作するのは、以下の場合です。
- ファイルパスから実行
- アイテムを引数をつけて実行する場合、引数に対して動作
- 規定のコマンドで実行
これらの場合に動作します。
これらの場合の事について、それぞれ説明をしていきます。
まず、「ファイルパスから実行した場合」についてですが、この例は上記に挙げた通りですので割愛します。
アイテムを引数をつけて実行する場合
アイテム名を指定して実行する場合ですが、
アイテムの引数に対して 空白の設定 の処理が動作します。
アイテム の実行時に、 空白の設定 が動作したところで一見意味は無い様に思えるでしょうが、
絶対パスの設定 への影響や、
アイテムの引数に %1 や %2 などを指定していた場合に意味を持ちます。
アイテムの引数に %1 や %2 などを指定していた場合は、空白のあるファイルパスを一つの括りとして扱うかどうかが 空白の設定 によって決まります。
補足
アイテムの登録 のウインドウの項目の中に
引数のファイルパスを自動的に ” ” で囲むようにする
という項目があります。
これによる動作は 空白の設定 による影響を受けません。
この設定は、引数の中にファイルパスがあったらそれを見つけて ” ” で囲む動作をするものです。
この設定にチェックをして登録しておいた アイテム は、引数の中にファイルパスがある場合、空白があるファイルパスだろうと、ファイルパスを見つけて ” ” で囲む動作をします。
ファイルパスなら、空白があるファイルパスであろうと、空白の無いファイルだろうと、、ファイルパスを見つけて ” ” で囲む動作をします。
Alt + o で確認すると分かると思います。
あと、 二行以上のアイテム には、 B_itemArg1 や B_itemArg2 の変数が使用できますが、 これらは空白のあるファイルパスを一つの括りとして認識する事はできません。
ですので、 空白の設定 のチェックの有無に関係なく、引数の中に空白があったら、そこで分割されて値が渡されます。
規定のコマンドで実行する場合
規定のコマンドで実行する場合ですが、
その時も空白のあるファイルパスを一つの括りとして扱う動作が 空白の設定 によって動作します。
これが動作しているかどうかの確認ですが、規定のコマンドによる動作なので、 Alt + o で確認する事ができません。
ですが、 &outArgsTestType6 の規定のコマンドに、ファイルパスの引数を指定する事で、 空白の設定 による違いがあるのを確認する事は可能です。
空白の設定 に関して説明しておきたい事はとりあえず以上です。
絶対パスの設定
この設定は、引数に相対パスが記入されていた場合に絶対パスに変換するかどうかの設定です。
この設定にチェックを入れると「絶対パスに変換させる処理」を解除します。( 何もしなくなる。 )
つまり、初期の設定では、「絶対パスに変換」する処理が自動的に働く様に設定されています。
補足
相対パスは、 TextRunRun のカレントフォルダを基準にして絶対パスに変換します。
カレントフォルダは、 A_WorkingDir の変数の値から判別できます。
カレントフォルダは、
- &cd の規定のコマンドや
- SetWorkingDir の AHKコマンド
これらを使う事で変更できます。
さて、相対パスであろうと絶対パスであろうと実行結果には何も違いは無いはずの事なのですが、この事による違いがでる場合があります。
その例についてここで説明します。
例として使うために、作業フォルダを使う必要があるため アイテムを使います。
smoopy をアイテムとして登録して、それを例として使います。
以下の記述を例にします。
smoopy readme.txt
これを Alt + o のキーで実行して確認すると、 絶対パスの設定 にチェックがある場合と、チェックが無い場合で、絶対パスに変換されるかどうかの違いが分かると思います。
チェックが無い場合
チェックがある場合
絶対パスの設定 によって、変換されるかどうかが変わる事が確認できると思います。
そして次の説明に行きます。
次は、 Alt + o のキーを使わず実行をしてください。
絶対パスの設定 にチェックを入れた場合と、チェックを外した場合の両方を実行してください。
そうすると、開かれるファイルが違うのが確認できると思います。
さて、なぜ開かれるファイルに違いがでるのかの理由を早速書きます。
それは、 TextRunRun のフォルダにも、smoopy のフォルダにも readme.txt のファイルが存在している事が理由です。
絶対パスに変換した場合は TextRunRun の readme.txt のファイルが開き、
相対パスのままだった場合は smoopy の readme.txt のファイルの方が開きます。
相対パスの方ではなぜ smoopy の readme.txt が開くかというと、作業フォルダというものがあり、そこが基準としての相対パスとなるからです。
作業フォルダというものがあり、相対パスを指定している場合はその作業フォルダが基準になるのが本来の形であったりします。
相対パスを指定している場合、作業フォルダが基準になるのが本来の形ですが、それを意識する機会はほとんど無いと思います。
作業フォルダの存在自体も普通は意識する機会は無いといっていいものだと思います。
さて、TextRunRun は 絶対パスの設定 にチェックを入れていない場合、つまり絶対パスに自動的に変換する状態が初期設定になっています。
ですので、相対パスは TextRunRun を基準にしたファイルパスとして扱われるようにしてあり、本来の作業フォルダから基準になる相対パスとは違うファイルを参考にする事になります。
なぜ、この「絶対パスに変換する状態」を初期設定にしているかというと、私ブランボンが相対パスといえば、TextRunRun を基準にした相対パスに統一しておきたいと思っているからです。
TextRunRun は、作者のブランボンが自分が使うために作ったものなので、自分にとって使いやすい設定を優先して作られています。
ですので、「本来の動作」を気にするユーザーの方はこの 絶対パスの設定 にチェックを入れて絶対パスに変換させる余計な動作を停止させておいた方が「本来の動作」といえるので、その方がいいかもしれません。
●
どの場合で 絶対パスの設定 が動作するか
この 絶対パスの設定 による、絶対パスへの変換が起こるのは以下の場合です。
- ファイルパスから実行
- アイテムを引数をつけて実行する
- 規定のコマンドで実行
これらの場合に動作します。 空白の設定 の時と近いです。
空白の設定 の時と近いので、先ほどの
●
どの場合で 空白の設定 が動作するか
のところと説明する事が同じになります。
なので上記に挙げた通りですのでここの説明は割愛します。
●
空白の設定の影響を受ける
この 絶対パスの設定 は、 空白の設定 の影響も受けるのでその事を説明します。
例として TextRunRun に a b.txt のファイルを作ったとします。
smoopy a b.txt
絶対パスの設定 のチェックを外すと、a b.txt のファイルは存在しているはずですので絶対パスに変換されるはずです。
しかし、 空白の設定 にチェックをし「スペースのあるファイルを一つの括りとして認識」する動作を停止させていた場合、引数の a b.txt をファイルパスだと認識できません
よって、絶対パスへの変換は行われません。
Alt + o のキーで試してみると分かると思います。
絶対パスの設定 に関して説明しておきたい事はとりあえず以上です。
後書き
さて、 「空白の設定と絶対パスの設定 」と題して、このページで説明したい事は以上です。
今回の説明は
TextRunRunの説明を見るページ
の方で説明しておこうとしたのですが、ホームページとして作るのが手間がかかって嫌だったので、このブログの方を使って説明する事にしました。
どちらにしろ、このページを見て分かるとおり、分かりにくい説明になる事は変わりありません。今の自分にはこの説明の仕方が限界です。
コメントを残す