'############################################################
'# lpvパターンファイルをコピーする
'#
'# 実行方法:コマンドコンソールから、以下の用に実施する
'# D:\task\splx>cscript //nologo Z10_lbpMainlvp.vbs > splxpatcopy.log &
'#
'# UPDATE 2013/08/21
'#
'# PARAM:NONE
'#
'#
'#
'############################################################
Option Explicit
' グローバル定義
Dim iStepNo : iStepNo = 1 'ステップ番号
Dim msg : msg = "コピー候補のファイル lpt$vpn.*" 'メッセージ
Dim ivpn '処理対象件数
'************************************************************
' 定数
'************************************************************
'' コピー元ディレクトリ
Const BASEPATH = "D:\Program Files (x86)\Trend Micro\OfficeScan\PCCSRV"
'' コピー先ディレクトリ
Const TAGTPATH = "D:\Program Files (x86)\Trend Micro\OfficeScan\PCCSRV\splxDownload"
'' 処理候補リスト
Const LIST_FILE_SRC = "d:\task\splx\tmp\FileListSrc.txt"
Const LIST_FILE_TGT = "d:\task\splx\tmp\FileListTgt.txt"
'' ドライブのリミット値(空容量)
Const DRIVE_FREE_LIMIT = 1000000000
'**************************************************************
' 全体処理
'**************************************************************
Call Init()
Call Main()
WScript.Quit (0)
'**************************************************************
' 初期処理
'**************************************************************
Sub Init()
Include "D:\task\splx\scripts\stdlib.vbs" ' 外部スクリプトをロード
'VBS起動するWSHコマンドがcScriptでない場合は
' エラーコード99で終了する
if Not (IsCscript()) then
WScript.Quit (99)
end if
SetLogHeader(msg)
End Sub
'**************************************************************
' メイン処理
'**************************************************************
Sub Main ()
SetLogStepStart 1,"候補リストの作成"
Call MainProcLst() '元・宛先ディレクトリ候補リストを作成
GetDriveFree LIST_FILE_TGT,msg
SetLogStepEnd 1,"候補リストの作成"
SetLogStepStart 2,"リセット"
Call MainProcDel() '宛先ディレクトリから対象の削除
SetLogStepEnd 2,"リセット"
SetLogStepStart 3,"コピー処理"
Call MainProcCpy() '宛先ディレクトリへ対象の複写
SetLogStepEnd 3,"コピー処理"
GetDriveFree LIST_FILE_TGT,msg ' DISK情報の表示
End Sub
'-----------------------------------------------
' 削除処理
'-----------------------------------------------
Sub MainProcDel()
Dim fsoObj
Dim objTextSrc
Dim objTextTgt
WScript.Echo now & MSGLEVEL_I & "DELETE FILE DIR:" & TAGTPATH
'------------------------
' コピー先:候補リストによる削除
'------------------------
Dim objFSO ' ファイルシステムオブジェクト
Dim objTextStream ' テキストストリームオブジェクト
Dim strText ' テキスト内容
Dim delfile
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFSO.OpenTextFile(LIST_FILE_TGT, 1)
If Not objFSO.FolderExists(TAGTPATH) Then
WScript.Echo now & MSGLEVEL_S & " 削除処理でデイレクトリなし。停止" _
& vbCrLf & TAGTPATH
WScript.Quit (10)
END IF
Do Until objTextStream.AtEndOfLine = True
strText = objTextStream.ReadLine
delfile = TAGTPATH & "\" & trim(strText)
objFSO.DeleteFile delfile, true
WScript.Echo now & MSGLEVEL_I & " FILE DELETE: " & trim(strText)
Loop
objTextStream.Close
Set objTextStream = Nothing
Set objFSO = Nothing
End Sub
'-----------------------------------------------
' コピー処理
'-----------------------------------------------
Sub MainProcCpy()
WScript.Echo now & MSGLEVEL_I & "COPY FILE FromDIR:" & BASEPATH & " -> " _
& vbCrLf & " ToDIR:" & BASEPATH
'------------------------
' コピー先:候補リストによる削除
'------------------------
Dim objFSO ' ファイルシステムオブジェクト
Dim objTextStream ' テキストストリームオブジェクト
Dim strText ' テキスト内容
Dim sFromFile
Dim sToFile
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFSO.OpenTextFile(LIST_FILE_SRC, 1)
If Not objFSO.FolderExists(BASEPATH) Then
WScript.Echo now & MSGLEVEL_S & " コピー処理で元デイレクトリなし。停止" _
& vbCrLf & BASEPATH
WScript.Quit (10)
END IF
If Not objFSO.FolderExists(TAGTPATH) Then
WScript.Echo now & MSGLEVEL_S & " コピー処理で先デイレクトリなし。停止" _
& vbCrLf & TAGTPATH
WScript.Quit (10)
END IF
Do Until objTextStream.AtEndOfLine = True
strText = objTextStream.ReadLine
sFromFile = BASEPATH & "\" & trim(strText)
sToFile = TAGTPATH & "\" & trim(strText)
WScript.Echo now & MSGLEVEL_I & " FILE COPY : " & trim(strText) _
& " " & vbCrLf & GetFileAttribute2(sFromFile)
'ファイルを上書きコピーする
If objFSO.FileExists(sFromFile) Then
Call objFSO.CopyFile(sFromFile, sToFile)
End If
Loop
objTextStream.Close
Set objTextStream = Nothing
Set objFSO = Nothing
End Sub
'-----------------------------------------------
' 候補リスト作成(メイン)
'-----------------------------------------------
Sub MainProcLst()
Dim fsoObj
Dim objTextSrc
Dim objTextTgt
Set fsoObj = CreateObject("Scripting.FileSystemObject")
'ログファイルがあったら抹消
If fsoObj.FileExists(LIST_FILE_SRC) Then
Call fsoObj.DeleteFile(LIST_FILE_SRC)
End If
If fsoObj.FileExists(LIST_FILE_TGT) Then
Call fsoObj.DeleteFile(LIST_FILE_TGT)
End If
'ログファイル準備
Set objTextSrc = fsoObj.OpenTextFile(LIST_FILE_SRC, 8, True, 0)
Set objTextTgt = fsoObj.OpenTextFile(LIST_FILE_TGT, 8, True, 0)
Dim objParam
objParam = BASEPATH
'------------------------
' コピー元、コピー先其々の候補リストを作成する
'------------------------
objParam = BASEPATH
'コピー元フォルダであるかをチェック
If fsoObj.FolderExists(objParam) Then
'リスト作成メイン実行
Call CreateFileList(fsoObj,objParam,objTextSrc)
Else
WScript.Echo now & MSGLEVEL_S & " リスト作成処理 コピー元デイレクトリなしで停止" _
& vbCrLf & BASEPATH & vbCrLf
WScript.Quit (10)
End If
If ivpn = 0 Then
WScript.Echo now & MSGLEVEL_W & " リスト作成処理 コピー元にファイルなしで終了" _
& vbCrLf & BASEPATH & vbCrLf
WScript.Quit (04)
End If
objParam = TAGTPATH
'コピー先フォルダであるかをチェック
If fsoObj.FolderExists(objParam) Then
'リスト作成メイン実行
Call CreateFileList(fsoObj,objParam,objTextTgt)
Else
WScript.Echo now & MSGLEVEL_S & " コピー先デイレクトリなしのためリスト処理を停止" _
& vbCrLf & TAGTPATH & vbCrLf
WScript.Quit (10)
End If
'ログファイルクローズ
objTextSrc.Close
objTextTgt.Close
'オブジェクト開放
Set objTextSrc = Nothing
Set objTextTgt = Nothing
Set fsoObj = Nothing
End Sub
'-----------------------------------------------
' 候補リスト作成(サブ)
'-----------------------------------------------
Sub CreateFileList(fsoObj,inFolderName,objText)
WScript.Echo now & MSGLEVEL_I & " 候補リスト : " & inFolderName
Dim fsoFolder
Dim fsoSubFolder
Dim fsoFile
ivpn = 0
'フォルダオブジェクト取得
Set fsoFolder = fsoObj.GetFolder(inFolderName)
For Each fsoFile In fsoFolder.Files
'ログに出力
IF left(fsoFile.name,len("lpt$vpn.")) = "lpt$vpn." THEN
objText.WriteLine fsoFile.name
ivpn = ivpn + 1
END IF
Next
WScript.Echo now & MSGLEVEL_I & " リスト対象数: " & ivpn & "件"
End Sub
'************************************************************
' 外部スクリプトをロードする
'************************************************************
Function Include( strFileName )
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim file
Set file = fso.OpenTextFile( strFileName )
ExecuteGlobal file.ReadAll
file.Close
End Function