桐10移行計画3 補足説明   2018年01月  3.07版  (C)悲しげ 【目的】 そろそろ「桐10s」が出る頃になって、ようやく桐9→桐10への本格移行に着手です。(^^;) で、桐10コンバータKiCnv.exeで変換して(それだけで)概ね動いていたのですが、 流石にそれだけでは幾つか引っかかりました。 例えば「ファイル削除」コマンドとか「#ファイルサイズ」関数とか・・・。 そこで慌てて桐移行ガイド(旧バージョンからの移行に関して)を読み直しました。 https://www.kthree.co.jp/kiri/ct_product/kiri10/migration.html その辺りについては、kevの記述を個々に修正しようとは思いましたが、桐8以来の 遺産が沢山ありすぎて、いささか手がすくみます。 それに「環境設定で拡張子の読み替えについて設定できる」とあるが、自分で使っ てないマシンのこともあるので、ちょっと不安。 で、いっそのことkev内部の記述において拡張子を(.tbl→.tbx,.wfm→.wfx…に) 一括変換させてみようと思い立ちまして。 そんな訳で、やってみたらまあまあ成功したように見えるので、ここでご開帳させ て戴きます。  ちなみに「桐10移行計画」の「その3」としたのは、過去の投稿との関連でして 「その1」はNo9684(起動パラ関連)、「その2」はNo10642(ZIPコマンドライン) を承けたことによります。 【使い方】 この処理一式を任意のフォルダに置く。(私の場合 某ドライブ:\TOOL フォルダに) 起動は「桐10移行3.wfx」から。(必要ならwfxのショートカットをデスクトップにでも) こうすることで、処理対象フォルダに作業ファイルを逐一手動でコピーすることなく、 汎用的(フォルダ横断的)に処理を行うことが可能なように作ったつもり。 具体的には「dir」やその他の処理でも全てフルパスで取り扱うようにした。 処理対象ファイルは「kex」と「cmx」限定。 どちらのファイルも基本構造は表ファイルのはずなので、拡張子を「tbx」としてコピー 後、必要な変換(#文字置換)を行ってから、元の拡張子に上書きコピーで戻すという、 少々「反則技」的と言うか・・・。 サブフォルダ下のも一括して取り扱い可とした。 (が、もし変換したくないファイルもあるなら要注意) 「当該フォルダのみ」の扱いは、発想を逆転して「dir」の「/b /s」でサブフォルダごと フルパスで取得してから、当該フォルダのみを絞り込んで処理している。 前回処理フォルダ名を記憶させてみた。(意外と便利かも) 処理作業の進行状況も表示させた。 【補足】 当初は「#ファイル検索」関数を使おうことも考えたが、場合によっては結果が不定になる ことを嫌って、ファイル名の取得は専ら「dir」コマンドを利用した。 具体的には「bat」ファイルを「印字」出力させたものを「シェル実行」で対処させたのだ が、これはこれで結構大変だったり。(^^;) 例えば「シェル実行」で「同期=する」指定を忘れて暫しの間ドツボにはまっていた。(^^;) 「印字開始」コマンドで「制御文字展開=しない」関連の不具合に遭遇してひどい目にあった。 上述したように、\TOOL フォルダなんかに置いたものだから「\t」がタブ展開されてしまった とか(あと「\n」なんかも困るのかも?)。 どうやら「印字開始」コマンドの指定よりも、環境設定の指定が優先されることがあるような ので、対策としては(ヘルプにもあるが)個々に   #文字置換(#文字置換(&フォルダ名,"\t","\\t"),"\n","\\n")  /*さらに大文字対応も?*/ とやるべきなのだが、面倒なので、その辺り起動時に次のメッセージを時々出して逃げてある。   この処理を使う場合は、環境設定/一括/高度な設定において   「印字コマンドでコントロール文字を展開する」にチェックを   入れないでおいて下さい。 試してないけど、まとめて「#文字置換(&フォルダ名,"\","\\")」でもいいらしい。 (これらは桐10ビルド番号#2238上で、この点はその後訂正されているかもしれない) それと(Vision Makerさんから)フォルダ名にスペースが含まれている時にうまく動かない 旨の指摘も戴き、改善した。 【最後に】 不具合あればお知らせ下さい。バグが多発して、かなりつぶしましたが、他にもきっとある でしょう。 Vision Makerさんには上記の他にも色々とテストをして下さり、バグ出しや操作性の向上に ご協力戴き、ありがとうございました。 それと上述したように少々「反則技」的なので、変換結果と安全性を保証するものではあり ません。実行に際しては、他フォルダ・メディア等にバックアップをとった上で、自己責任 でお願いいたします(重要!)。