見出し画像

【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
  

前の記事


いいなと思ったら応援しよう!