2019/07/26(金)ファイル/フォルダ判定サブルーチン fnChkFile
2021/05/21 06:54
ファイル/フォルダ判定サブルーチン fnChkFile
このサンプルマクロは、以下の仕様を満たすものとします。マクロの目的
指定の変数 <targetname> に格納した文字列が、ファイルなのかディレクトリなのか、以下の戻り値 <result> で出力します。<result> | 意味 |
---|---|
0 | 対象は存在しなかった。 |
1 | 対象はフォルダだった。 |
2 | 対象はファイルだった。 |
利用可能環境
Teraterm
依存する Tera Term バージョン:Tera Term 4.69 以降*1→ サンプルのサブルーチン内コマンドで必要なバージョンとしています。
利用する Tera Term コマンド:
種別:制御 | Ver | 機能の簡易説明 |
---|---|---|
call | サブルーチンをコールする。 | |
end | マクロの実行そのものを終了する。 | |
if,then,elseif,else,endif | 条件分岐 | |
return | サブルーチンを抜け、メインルーチンへ戻る。 | |
種別:文字列操作 | Ver | 機能の簡易説明 |
sprintf2 | 4.62以降 | フォーマットされた出力を返す。 |
種別:ファイル操作 | Ver | 機能の簡易説明 |
fileclose | ファイルハンドルを閉じる。 | |
fileopen | ファイルを開く。 | |
filesearch | ファイルまたはフォルダがあるか確かめる。 | |
filewrite | ファイルに文字列を書き込む。 | |
foldersearch | 4.69以降 | フォルダがあるか確かめる。 |
種別:その他 | Ver | 機能の簡易説明 |
getdate | 現在の日付を得る。 | |
4.57以降 | 書式を指定するオプションの追加。 | |
4.58以降 | 互換性維持のための仕様変更。 | |
4.74以降 | タイムゾーンを指定するオプションの追加。 | |
4.80以降 | マクロ実行前後でタイムゾーンを復元するよう仕様変更。 | |
messagebox | ダイアログボックスを開き、ユーザーにメッセージを知らせる。 | |
4.54以降 | 特殊文字の解釈を制御するオプションの追加。 | |
4.60以降 | キャンセル時にマクロ停止を確認する機能の追加。 |
マクロの使い方
別途開発する Tera Term マクロの最後に追記(組み込んで使用)してください。コード
著作権情報
このサンプルマクロに関する著作権は、当サイト管理者が所有しています。著作権者
神場 和也(著作人格権は放棄しません)ライセンス
ほかのプログラムへ、現状のまま組み込んで利用する限り、著作者の許諾は不要です。改変する場合においては、改変した者もしくは改変を許可した法人がすべての責任を負うことを求めます。
なお、著作人格権を持つものに無断でコード自体を商材として利用することを禁じます。
関連情報
(なし)サンプルコード
;;; 変数設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 必須となる変数の設定 targetname = 'dummy.txt' ;;; メイン処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; サブルーチンのコール call fnChkFile ; 結果の表示 messagebox result 'result' ; 対象が存在しない場合にのみファイル作成 if result = 0 then getdate YYYYMMDD_hhmmss "%Y/%m/%d %H:%M:%S" fileopen fhandle targetname 0 sprintf2 msg "%s ファイル %s を作成しました。" YYYYMMDD_hhmmss targetname filewrite fhandle msg fileclose fhandle endif ;;; 終了処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; マクロの終了 end ;;; サブルーチン ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; :fnChkFile ; 変数 targetname 内の文字列がファイルかフォルダかを判定するサブルーチン ; result ; 0 = 対象は存在しなかった。 ; 1 = 対象はフォルダだった。 ; 2 = 対象はファイルだった。 filesearch targetname if result = 1 then ; 対象が存在する場合 ; フォルダであるか確認する foldersearch targetname if result = 1 then ; フォルダの場合 (存在する対象がフォルダである) result = 1 else ; ファイルの場合 (存在するがフォルダではない) result = 2 endif else ; 対象が存在しない場合 result = 0 endif return