【TTL】はじめてのTTLマクロ 8 ログ名とログ格納フォルダを指定してログ保存
はじめに
取得するログのファイル名と格納先を指定する。
具体的には、
・ファイル名は、batの引数で指定
・フォルダ名は、"log"固定とし、フォルダが無ければ作成する
logget.bat
引数の2番目に拡張子付きのログファイル名(CEN-M-RT-001.log)を指定する。
@echo off
mkdir log
C:\work\logget\conf\teraterm-5.2\ttpmacro.exe C:\work\logget\logget.ttl CEN-M-RT-001.log 192.168.11.111 rpass epass ruser CEN-M-RT-001 command.txt
logget.ttl
filesearchを使い既存のファイルやフォルダの存在有無を確認する。(filesearchだがフォルダの確認も可能)確認結果を基に処理を変える必要がある。
;------------------------------------------------------------------------------
;変数設定
;------------------------------------------------------------------------------
;debugモードで動かすか選択
numDebugFlag = 0 ; 1:debugモード 0:通常モード
if numDebugFlag = 1 messagebox "debugModeOn" "debug"
;フォルダ名・ファイル名を設定
strIniFileName = ".\TERATERM.INI"
strLogDirName = ".\log" ;ログ保存先のファイル名
strCommandsDirName = ".\conf" ;command.txt保存先のファイル名
;その他変数
numTemp = 0
strTemp = ""
strInputText = ""
numCommandsFH = 0 ; コマンド一覧のファイルハンドル
;プロンプト回り
strPrompto = "" ; "hostname#"といったプロンプト全体
strLogDirPath = ""
strCommandsFilePath = ""
strInputText = ""
strConnectText = ""
strLogFileName = params[2]
strIP = params[3]
strLoginPass = params[4]
strEnablePass = params[5]
strLoginUser = params[6]
strHostname = params[7]
strCommandsFileName = params[8]
;------------------------------------------------------------------------------
;ログ出力先フォルダを作成する
;------------------------------------------------------------------------------
; 出力先パスを取得する(例)C:\work\01_xxx\log)
getdir strLogDirPath
strconcat strLogDirPath '\'
strconcat strLogDirPath strLogDirName
filesearch strLogDirPath
; 出力先フォルダがなければフォルダを作成する
if result <> 0 then
else
strTemp = 'cmd /c mkdir.exe '
strconcat strTemp '"'
strconcat strTemp strLogDirPath
strconcat strTemp '"'
exec strTemp
endif
;------------------------------------------------------------------------------
;メインルーチン
;------------------------------------------------------------------------------
strCommandsFilePath = strCommandsDirName
strconcat strCommandsFilePath "\"
strconcat strCommandsFilePath strCommandsFileName
;機器にログインしてログ取得
call funcGetConnectText
call funcConnectDevice
call funcLogin
call funcCheckHostname
call funcMakeLogFile
call funcExecCommands
sendln "exit"
:labelClose
end ; マクロ終了
(略)
;----------------------------------------------------------------------------
;ログファイル名を作成しログオープン
;----------------------------------------------------------------------------
:funcMakeLogFile
if numDebugFlag = 1 messagebox "funcMakeLogFile" "debug"
;すでにログオープンしている場合はクローズする
loginfo strTemp
if result <> -1 then
logclose
endif
;ログファイルパスを作成
strTemp = strLogDirPath
strconcat strTemp '\'
strconcat strTemp strLogFileName
;ログファイルのオープン
if numDebugFlag = 1 messagebox strTemp "ログファイルパス"
logopen strTemp 1 1
sendln
filesearch strTemp
if result = 0 then
messagebox strTemp "ログオープンエラー"
sendln "exit"
goto labelClose
endif
return