その他

任意ファイルの存在の有無によって、処理を分岐させる方法[No101]

スポンサーリンク

任意のファイルがある場合、ない場合で異なる処理を行う手順について紹介します。VBScript、Batを用いて実装しています。

プログラムの紹介

Step1:任意のファイルを作成する

下記リンク先のプログラム1を参考にファイルを作成する。ここではTarget.txtを作成したとして以降を記述していきます。

no image
決まった時間のログ管理におすすめの方法[No4]
「毎日、決められた時間にパソコンがログオンしているかどうか確認したい」、「ログオフしていたら知らせてほしい」、「決まった時間にパソコンがログオン、ログオフ、どちらの状態であったか知り ...

Step2:任意のファイルの存在の有無で処理内容をかえる


Option Explicit

'------------------------------------------------------------------------
'変数定義
'------------------------------------------------------------------------
Dim filename01 : filename01 = "Target"
Dim extension01 : extension01 = ".txt"

'------------------------------------------------------------------------
'カレントディレクトリのパスを取得する
'------------------------------------------------------------------------
Dim CurDir : CurDir = GetCurDir()
'------------------------------------------------------------------------
'ファイルが存在する 場合:True
'ファイルが存在しない場合:False
'------------------------------------------------------------------------
Dim existsCheckFileFlg
existsCheckFileFlg = CheckExistsFile(CurDir & "\" & filename01 & extension01)
'------------------------------------------------------------------------
'ファイル有無で処理
'------------------------------------------------------------------------
If existsCheckFileFlg = True Then
   '------------------------------------------------------------------------
   'ファイル存在する場合:○○〇の処理
   '------------------------------------------------------------------------
   WriteLog("対象ファイルあり")
   'MsgBox("ファイル存在あり :ポップアップで処理確認")
   '------------------------------------------------------------------------
ElseIf existsCheckFileFlg = False Then
   '------------------------------------------------------------------------
   'ファイル存在しない場合:○○〇の処理
   '------------------------------------------------------------------------
   WriteLog("対象ファイルなし")
   'MsgBox("ファイル存在なし :ポップアップで処理確認")
   '------------------------------------------------------------------------
Else
   '------------------------------------------------------------------------
   'ファイル存在しない場合:○○〇の処理
   '------------------------------------------------------------------------
   WriteLog("エラー")
   'MsgBox("ファイル存在エラー:ポップアップで処理確認")
   '------------------------------------------------------------------------
End If

'************************************************************************
'用途:カレントディレクトリのパスを取得する
'************************************************************************
Function GetCurDir()
	Dim ObjFSO : Set ObjFSO = WScript.CreateObject("Scripting.FileSystemObject")
	GetCurDir               = ObjFSO.getParentFolderName(WScript.ScriptFullName)
End Function

'************************************************************************
'用途:ファイルを作成する
'引数:filePath(作成するファイルの場所)
'************************************************************************
Sub CreateFile(ByVal filePath)
	Dim ObjFSO : Set ObjFSO = WScript.CreateObject("Scripting.FileSystemObject")
	ObjFSO.CreateTextFile(filePath)	
	Set ObjFSO = Nothing
End Sub

'************************************************************************
'用途:ファイルの存在チェック
'引数:filePath(ファイルの場所)
'************************************************************************
Function CheckExistsFile(ByVal filePath)
	Dim ObjFSO : Set ObjFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	If ObjFSO.FileExists(filePath) = True Then
		Set ObjFSO = Nothing
		CheckExistsFile = True
	Else
		CheckExistsFile = False
	End If
End Function

'************************************************************************
'用途:フォーマットした現在時刻を取得する
'************************************************************************
Function GetNowTime()
   Dim LenDyyyy : LenDyyyy = Len("yyyy")
   Dim LenDmm   : LenDmm = Len("mm")
   Dim LenDdd   : LenDdd = Len("dd")
   
   Dim LenThh   : LenThh = Len("hh")
   Dim LenTmm   : LenTmm = Len("mm")
   Dim LenTss   : LenTss = Len("ss")
   
   Dim StrTemp : StrTemp = Replace(Now(), "/", "")
   StrTemp = Replace(StrTemp, " ", "")
   StrTemp = Replace(StrTemp, ":", "")
   
   Dim Dyyyy : Dyyyy = Left(StrTemp, LenDyyyy)
   StrTemp = Mid(StrTemp, LenDyyyy + 1)
   
   Dim Dmm : Dmm = Left(StrTemp, LenDmm)
   StrTemp = Mid(StrTemp, LenDmm + 1)
   
   Dim Ddd : Ddd = Left(StrTemp, LenDdd)
   StrTemp = Mid(StrTemp, LenDdd + 1)
   
   Dim Thh : Thh = Left(StrTemp, LenThh)
   StrTemp = Mid(StrTemp, LenThh + 1)
   
   Dim Tmm : Tmm = Left(StrTemp, LenTmm)
   StrTemp = Mid(StrTemp, LenTmm + 1)
   
   Dim Tss : Tss = Left(StrTemp, LenTss)
   StrTemp = Mid(StrTemp, LenTss + 1)
   
   Dim FormatNowTime
   FormatNowTime = Dyyyy & "年"
   FormatNowTime = FormatNowTime & Dmm & "月"
   FormatNowTime = FormatNowTime & Ddd & "日"
   FormatNowTime = FormatNowTime & Thh & "時"
   FormatNowTime = FormatNowTime & Tmm & "分"
   FormatNowTime = FormatNowTime & Tss & "秒"
   
   GetNowTime = FormatNowTime
End Function

'************************************************************************
'用途:ファイルに書き出す
'引数:filePath(ファイルの場所),tempText(書き出す文字列)
'************************************************************************
Sub WriteLineText(ByVal filePath,tempText)
	Dim ObjFSO : Set ObjFSO = WScript.CreateObject("Scripting.FileSystemObject")
	Dim Fn  : Set Fn = ObjFSO.OpenTextFile(filePath, 8, True) '2の場合上書き、8の場合追記
	Fn.WriteLine(tempText) 'Writeの場合:改行なし、Writelineの場合:改行あり
	Set ObjFSO = Nothing
End Sub

'************************************************************************
'用途:ログファイルに書き出す
'引数:msg(書き出す文字列)
'************************************************************************
Sub WriteLog(ByVal msg)
   Dim filename02 : filename02 = "Log"
   Dim extension02 : extension02 = ".txt"
	
   '------------------------------------------------------------------------
   'ログファイルが存在する 場合:True
   'ログファイルが存在しない場合:False
   '------------------------------------------------------------------------
   Dim existsCheckFileFlg
   existsCheckFileFlg = CheckExistsFile(CurDir & "\" & filename02 & extension02)
   '------------------------------------------------------------------------
   'ログファイルが存在しなければ作成する
   '------------------------------------------------------------------------
   If existsCheckFileFlg = False Then
      '------------------------------------------------------------------------
      'ログファイル作成
      '------------------------------------------------------------------------
      CreateFile(CurDir & "\" & filename02 & extension02)
      '------------------------------------------------------------------------
      '5秒間停止する
      'Dim objWsh
      'WScript.Sleep 5000
      '------------------------------------------------------------------------
   End If
   
   '------------------------------------------------------------------------
   'ログファイル追記
   '------------------------------------------------------------------------
   Dim LogContents : LogContents = Now() & ":" & msg
   Call WriteLineText(CurDir & "\" & filename02 & extension02,LogContents)
   '------------------------------------------------------------------------
End Sub

Step3:任意のファイルを削除する

Step1のリンク先のプログラム3を参考にファイルを作成する。

活用方法

何かの判定処理をするExcelマクロ(例:記念日、祝祭日などの判定マクロ)を用意する。そのマクロでは、判定がTrueの場合は、テキストファイルを作成する。タスクスケジューラでそのマクロを先に実行しておけば、次のタスクでこの記事で紹介した方法で、処理を分岐する。ファイルがあった場合は、○○の処理をするなど。

最後までお付き合いいただきありがとうございます!

この情報が誰かの役にたてれば幸いです。

スポンサーリンク

-その他