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> – 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コマンドに影響を与えるのか、確認してからマクロを作成してください。