本サイトはプロモーションを含みます。

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

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

changedirとsetdirの違い

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

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

※changedirはTera Termとマクロがリンク済みである必要があります。

「現在のディレクトリ」という表現が何を指しているのか、掘り下げていきましょう。

現在のディレクトリとは

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

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

  • 64bit版Windows – C:¥Program files(x86)¥teraterm
  • 32版Windows – C:¥Program files¥teraterm

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

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

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

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

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

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

changedirとsetdirが影響を与えるディレクトリが判りました。

では、どのようなTTLコマンドがchangedirとsetdirの影響を受けるのでしょうか。

ヘルプを読むと次のようになります。

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

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

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

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

  • logopen <filename> <binary flag> <appende flag> – ローカルでログファイルを開く
  • scprecv <remote filename> [<local filename>] – SCPプロトコルでファイルを受信する

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

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

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

  • include <filename> – インクルードファイルを読み込み実行する
  • fileconcat <file1> <file2> – file2の内容をfile1の最後に追加する
  • filecopy <file1> <file2> – file1file2にコピーする
  • filecreate <file handle> <filename> – filenameを新規作成する
  • filedelete <filename> – filenameを削除する
  • fileopen <file handle> <filename> <append flag> – filenameを開く
  • filerename <file1> <file2> – file1file2に名前変更する
  • 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コマンドに影響を与えるのか、確認してからマクロを作成してください。