見出し画像

Tera Termマクロのchangedirとsetdirの違い

changedirとsetdirの違いと役割について解説します。


changedirとsetdirの違い

changedirsetdirの違いは以下のとおりです。

  • changedir - 「Tera Term」の現在のディレクトリを変更する

  • setdir - 「Tera Termマクロ」の現在のディレクトリを変更する

changedirはTera Termとマクロがリンク済みである必要があります。 「現在のディレクトリ」という表現が何を指しているのか、掘り下げていきましょう。

現在のディレクトリとは?

Tera Termの現在のディレクトリ

「Tera Termの現在のディレクトリ」とは、teraterm.exeがインストールされているディレクトリです。つまり…

  • 64bit版Windows - C:¥Program files(x86)¥teraterm5

  • 32版Windows - C:¥Program files¥teraterm5

となるわけです(v5系デフォルトインストールの場合)。

TeraTermマクロの現在のディレクトリ

それに対して「TeraTermマクロの現在のディレクトリ」とは、実行するTeraTermマクロが保存されているディレクトリです。

たとえばデスクトップにマクロファイルを置いて、そのファイルをダブルクリックした場合はデスクトップが「現在のディレクトリ」になります。

Tera Termマクロのショートカットを作成して実行した場合でも、ショートカットが格納されているディレクトリではなくて、実際に実行されるTera Termマクロが保存されているディレクトリが「TeraTermマクロの現在のディレクトリ」となります。

changedireとsetdirが影響を与えるTTLコマンド

changedirsetdirが影響を与えるディレクトリが判りました。 では、どのようなTTLコマンドがchangedirsetdirの影響を受けるのでしょうか。 ヘルプを読むと次のようになります。

  • changedir- 「通信コマンドで指定するファイル名」が影響を受ける

  • setdir -  「通信コマンド以外で指定するファイル名」が影響を受ける

changedirは通信コマンドに影響を与え、setdirは通信コマンド以外に影響を与える事がわかりました。それでは、それぞれ具体的なTTLコマンドを紹介します。

changedirの影響を受けるTTLコマンド

一般的によく使われるTTLコマンドには次のようなものがあります。

  • logopen <filename> <binary flag> <appende flag> - ローカルでログファイルを開く

  • scprecv <remote filename> [<local filename>] - SCPプロトコルでファイルを受信する

scpsendchangedirの影響を受けないため、フルパスでfilenameを指定する必要があります。

setdirの影響を受けるTTLコマンド

一般的によく使われるTTLコマンドには次のようなものがあります。

  • include <filename> - インクルードファイルを読み込み実行する

  • fileconcat <file1> <file2> - file2の内容をfile1の最後に追加する

  • filecopy <file1> <file2> - file1をfile2にコピーする

  • filecreate <file handle> <filename> - filenameを新規作成する

  • filedelete <filename> - filenameを削除する

  • fileopen <file handle> <filename> <append flag> - filenameを開く

  • filerename <file1> <file2> - file1をfile2に名前変更する

  • file search <filename> - filenameが存在するか調べる

  • filestat <filename > <size> [<mtime>] [<drive>] - finenameの統計情報を取得する

  • filetruncate <filename> <size> - ファイルのサイズを変更する

  • foldercreate <foldername> - foldernameを作成する

  • folderdelete <foldername> - foldernameを削除する

  • foldersearch <foldername> - foldernameが存在するか調べる

  • getfileattr <filename> - filenameの属性を得る

  • getpassword <filename > <password name> <strvar> - filenameからパスワードを読み出す

  • setpassword <filename> <password name> <strvar> - filenameのパスワードを更新する

ファイル名を相対パスで指定する場合は、changedirやsetdirの使用が必須となってくるので、changedir/setdirそれぞれがどのTTLコマンドに影響を与えるのか、確認してからマクロを作成してください。

この記事が気に入ったらサポートをしてみませんか?