//============================================================================== // アイテム強化職員(補助ツール) by はにわ 2009/09/12 ver1.00 //============================================================================== //■概要 // アイテム強化職員スクリプトを利用する際に、併せて実行するVBScriptです // //■使い方 // □起動 // @本スクリプト内の初期設定にあるファイルパスを環境に合わせて定義 // Aサーバ起動前に実行 // // □終了 // @永久ループしているためタスクマネージャから強制終了 or PCシャットダウン // //■仕組み // @永久ループでITEMDBの更新をチェック // Aアイテム強化職員スクリプトがITEMDBを更新したことを検知し、ITEMDBを // db/item_db.txtに上書きする // //■なぜこのVBScriptが必要なのか // @Aurigaのスクリプトが拡張子付きファイルを更新出来ないように制限している為 // AAurigaのスクリプトでCSVをitem_db.txtを単純に読込→保存すると["]の判定が入り、 // item_db.txtが壊れてしまう為 // //============================================================================== Option Explicit Dim objFSO 'FileSystemObject Dim objFile 'FileObject Dim objFileIn '書き込みファイルオブジェクト Dim objFileOut '読み込みファイルオブジェクト Dim strFileIn '書き込みファイルフルパス Dim strFileOut '読み込みファイルフルパス Dim strFileITDB 'item_db.txtフルパス Dim strBuf Dim strDLM '================================================================= '初期設定 '================================================================= strFileIn = "C:\Auriga\ITEMDB" 'アイテム強化職員スクリプト内で定義しているitem_dbのフルパス strFileOut = "C:\Auriga\ITEMDB1" '一時ファイル(なんでもよい) strFileITDB = "C:\Auriga\db\item_db.txt" 'db/item_db.txtのフルパス Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") '================================================================= 'item_db.txt→(コピー)→書き込みファイル→(置換)→読み込みファイル '================================================================= objFSO.CopyFile strFileITDB,strFileOut,True Set objFileIn = objFSO.OpenTextFile(strFileIn, 2, True) Set objFileOut = objFSO.OpenTextFile(strFileOut) Do While objFileOut.AtEndOfStream <> True strBuf = objFileOut.ReadLine strBuf = Replace(strBuf,"""","@") '["]を[@]に置換 objFileIn.WriteLine(strBuf) Loop objFileIn.Close objFileOut.Close '================================================================= '読み込みファイル→(置換)→書き込みファイル→(コピー)→item_db.txt '================================================================= Set objFile = objFSO.GetFile(strFileIn) strDLM = objFile.DateLastModified Do While True Do While strDLM = objFile.DateLastModified WScript.Sleep(1000) Loop Set objFileIn = objFSO.OpenTextFile(strFileIn) Set objFileOut = objFSO.OpenTextFile(strFileOut, 2, True) Do While objFileIn.AtEndOfStream <> True strBuf = objFileIn.ReadLine strBuf = Trim(Replace(strBuf,"@","""")) '[@]を["]に置換 if Mid(strBuf,Len(strBuf),1) = "," then strBuf = Mid(strBuf,1,Len(strBuf)-1) '末尾の["]を削除 end if objFileOut.WriteLine(strBuf) Loop objFileIn.Close objFileOut.Close strDLM = objFile.DateLastModified objFSO.CopyFile strFileOut,strFileITDB,True Loop '================================================================= '終了処理(強制終了だから意味は無いけど・・・) '================================================================= objFileIn.Close objFileOut.Close Set objFileIn = Nothing Set objFileOut = Nothing Set objFile = Nothing Set objFSO = Nothing