ディスクごとリネーム

作者: 上村 郁夫


 vzの[esc][p](ファイル名の変更)は編集中テキストの名前(画面最上行の右端)を変えはするものの、ディスクに存在するオリジナルのファイルはそのままです。

  ┌────────────┐  [ESC][P]  ┌────────────┐
  │                 GOD.TXT│ ────→ │                 DOG.TXT│
  ├────────────┤    変更    ├────────────┤
  │                        │            │                        │
  │     編集テキスト      │            │      編集テキスト     │
  │                        │            │                        │
  │                        │            │                        │
  └────────────┘            └────────────┘

    ┌─────────┐                    ┌─────────┐
    │                  │                    │                  │
    │     GOD.TXT      │ ────────→ │     GOD.TXT      │
    │                  │     変わらない     │                  │
    │        ○        │                    │        ○        │
    │                  │                    │                  │
    │     ディスク     │                    │     ディスク     │
    │                  │                    │                  │
    └─────────┘                    └─────────┘

 「DOG.TXT」はいわば根無し草の状態になります。[ESC][S]でセーブしてはじめて、ディスク上にも「DOG.TXT」が作成され、地に足がついた状態となります。さて、「GOD.TXT」の処遇はどうしたものでしょうか。とっておく必要がなければ、削除しなくてはなりません。
 [ESC][P]でオリジナルのファイルもいっしょに変わってくれれば、こんな手間はかからないのに……。
 おまかせください。REN.DEFを使えば、それが可能となります。
 [ESC][P]なら通常の「ファイル名の変更」。[ESC][SHIFT]+[P]ならピッと音がして、「ディスクごとリネーム」となります。

        ┌─【ファイル名】───────────┐
        │C:\GOD.TXT                            │
        └───────────────────┘

 ディレクトリ名を書き換えれば、別のディレクトリに移動(?)することさえできます。ただし、MS-DOSのRENAMEコマンドと同じで、「C:\GOD.TXT」→「A:\GOD.TXT」のように別のドライブへ移動することはできません。リネームはディスクの管理情報を書き換えるだけであって、別のドライブへ移動するとなるとファイル本体に手をつけなくてはならないからです。
 「指定が違います」とエラーメッセージが出たら、以下のいずれかが原因です。
 (1)そのファイル名はすでに存在する。
 (2)移動先のディレクトリが存在しない。
 (3)ドライブ名を変更しようとした。
(「Vzマクロコレクション2」所収)

download
======== ren.def ======== I.Kamimura
* M
89 [ESC]P @P "ファイル名の変更"
        ?.
        (ks&1)?? { #82. }
        &b(3) #J #P #m
        mr[, #82 &l (r<0) mr], ?.
        pw[, pw=pf, #J #P #m pw],
        dx=pw,
        di=pf,
        ax=$5600, &i($21)
        (r)??. &b(3) &m(40)
;*
;======== ren.def ========