'############################################################ '# 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