2012年2月7日 星期二
archive system log by schedule tasks
' 由於某些軟體會產生大量的檔案,特建立備存機制,
' 1. 將特定目錄下的子目錄都備存起來,並刪除空的子目錄
' 2. 需先安裝WINRAR
' 3. 將下列程式做成.vbs 檔案
' 4. 建立Task schedule , 將備存的目錄設為參數
'
'--- .vbs 程式開始
Option Explicit
' 宣告變數
Dim FSO, agoDays, modifiedDate, ArcFolder ,myArgs, GetDateTimeFM, wshshell
' 建立檔案系統物件(File System Object)
Set FSO = CreateObject("Scripting.FileSystemObject")
' 建立執行的shell 物件
Set wshshell=createobject ("wscript.shell")
'取得第一個變數
Set myArgs = WScript.arguments
' 欲備存檔案所在之目錄
ArcFolder = myArgs(0)
' 取得日期(yyyy_mm_dd_hh_nn_ss)
GetDateTimeFM = GetFormattedDateTime()
' 呼叫備存檔案的子程序
ArcFilesInFolder FSO.GetFolder(ArcFolder)
' 呼叫刪除空Folder的子程序
DelFoldersInFolder FSO.GetFolder(ArcFolder)
' 備存目錄的子程序
Sub ArcFilesInFolder(folder)
' 宣告變數
Dim file, subFolder,strshell
' 如果遇到子目錄,也要進去檢查並刪除
For Each subFolder in folder.SubFolders
strshell = "WinRAR.exe a -r -df " + SubFolder + "-dt-" + GetDateTimeFM + ".rar " + subFolder + "\"
Call wshshell.run (strshell,0)
Next
End Sub
' 刪除檔案的子程序
Sub DelFoldersInFolder(folder)
' 宣告變數
Dim dfile, dsubFolder, fdEmpty
' 如果遇到子目錄,要先進去檢查並刪除
For Each dsubFolder in folder.SubFolders
DelFoldersInFolder dsubFolder
Next
fdEmpty = True
' 找出目前所在目錄內所有的檔案
For Each dfile In folder.Files ' 檢查檔案日期是否符合條件,若符合,就刪除
fdEmpty = False
Next
For Each dsubFolder in folder.SubFolders
fdEmpty = False
Next
If fdEmpty = True Then
folder.delete
End If
End Sub
' 取得日期的函式
Function GetFormattedDateTime
Dim strNow, strDD, strMM, strYYYY,strHH,strNN,strSS
strYYYY = DatePart("yyyy",Now())
strMM = Right("0" & DatePart("m",Now()),2) 'month
strDD = Right("0" & DatePart("d",Now()),2) 'day
strHH = Right("0" & DatePart("h",Now()),2) 'hour
strNN = Right("0" & DatePart("n",Now()),2) 'mintue
strSS = Right("0" & DatePart("s",Now()),2) 'second
GetFormattedDateTime = strYYYY & "_" & strMM & "_" & strDD & "_" & strHH & "_" & strNN & "_" & strSS
End Function
'--- .vbs 程式結束
2012年2月6日 星期一
How to archive Discussion Application in Lotus Notes?
開發過Lotus Notes 應用系統系統的都知道,只要文件Copy再貼上,@DocumentUnid 一定不一樣,因次,應用系統通常都會自己建一個 UniqueID 欄位,來處理文件複製/貼上而造成相關文件對應不起來的這種問題。
但是, Discussion 是一個特別的資料庫,它是討論區,既然是"討論",就會有前/後(主文/回應/回應的回應)的問題,除非所有預設的View 都再客制,否則無法以自製 UniqueID來處理前/後文關係,因此通常都不再客制Document ID欄位。
這時後的備存,只能使用系統預設的備存工具,來保留資料移動到不同系統/目錄時,仍能有相同的Document ID。
1. 先設定Archiving Rule : Database => Properties => Archive Setting => Archive settings 設定視窗
Basics => 設定目的地 (A Server 到 B Server )
Criteria => 同Mail , 設定那些目錄需備存
Advanced => 正常備存後刪除
Schedule => 不能設...怎麼辦?
2. 設定代理程式,自動啟動備存排程:
Dim s As New notessession
Dim db As notesdatabase
Set db = s.currentdatabase
Call db.archiveNow()
Exit Sub
2012年1月19日 星期四
每天自動刪除過期檔案(Delete Files over than n days)
File Server 雖是儲存空間,但也不必要永久存放,如果已經進磁帶備份後,很多參考用的大檔案是可以刪除的。
研究了一下 VBScript 自動刪除的機制,將下面的.vbs File 加到Server 的Schedule Tasks ,再加上絕對路徑當參數,就可以自動刪除了。
------------------ 以下作成一個 delFolderFilesOverThan60days.vbs --------
' 指定所有變數必須事先宣告才能使用
Option Explicit
' 宣告變數
Dim FSO, agoDays, modifiedDate, delFolder ,myArgs
'If WScript.arguments.length <> 0 Then
' WScript.quit
'End If
' 建立檔案系統物件(File System Object)
Set FSO = CreateObject("Scripting.FileSystemObject")
' 請將下面的變數值換成你要的
' 指定 n 天前的檔案,現在是 3 天前
agoDays = 60
' 取得檔案的修改日期
modifiedDate = DateAdd("d", -agoDays, Date)
Set myArgs = WScript.arguments
' 欲刪除檔案所在之目錄
delFolder = myArgs(0)
' 呼叫刪除檔案的子程序
DelFilesInFolder FSO.GetFolder(delFolder)
' 刪除檔案的子程序
Sub DelFilesInFolder(folder)
' 宣告變數
Dim file, subFolder
' 找出目前所在目錄內所有的檔案
For Each file In folder.Files
' 檢查檔案日期是否符合條件,若符合,就刪除
If ((file.DateLastModified <= modifiedDate)) Then
file.delete
End If
Next
' 如果遇到子目錄,也要進去檢查並刪除
For Each subFolder in folder.SubFolders
DelFilesInFolder subFolder
Next
End Sub
'WScript.Echo("作業執行完畢:" & Date & " " & Time)
----------------------------------
程式的參考出處:
http://ithelp.ithome.com.tw/question/10009001
http://ithelp.ithome.com.tw/question/10058183
研究了一下 VBScript 自動刪除的機制,將下面的.vbs File 加到Server 的Schedule Tasks ,再加上絕對路徑當參數,就可以自動刪除了。
------------------ 以下作成一個 delFolderFilesOverThan60days.vbs --------
' 指定所有變數必須事先宣告才能使用
Option Explicit
' 宣告變數
Dim FSO, agoDays, modifiedDate, delFolder ,myArgs
'If WScript.arguments.length <> 0 Then
' WScript.quit
'End If
' 建立檔案系統物件(File System Object)
Set FSO = CreateObject("Scripting.FileSystemObject")
' 請將下面的變數值換成你要的
' 指定 n 天前的檔案,現在是 3 天前
agoDays = 60
' 取得檔案的修改日期
modifiedDate = DateAdd("d", -agoDays, Date)
Set myArgs = WScript.arguments
' 欲刪除檔案所在之目錄
delFolder = myArgs(0)
' 呼叫刪除檔案的子程序
DelFilesInFolder FSO.GetFolder(delFolder)
' 刪除檔案的子程序
Sub DelFilesInFolder(folder)
' 宣告變數
Dim file, subFolder
' 找出目前所在目錄內所有的檔案
For Each file In folder.Files
' 檢查檔案日期是否符合條件,若符合,就刪除
If ((file.DateLastModified <= modifiedDate)) Then
file.delete
End If
Next
' 如果遇到子目錄,也要進去檢查並刪除
For Each subFolder in folder.SubFolders
DelFilesInFolder subFolder
Next
End Sub
'WScript.Echo("作業執行完畢:" & Date & " " & Time)
----------------------------------
程式的參考出處:
http://ithelp.ithome.com.tw/question/10009001
http://ithelp.ithome.com.tw/question/10058183
2011年12月27日 星期二
新建的MSSQL無法用SA登入
今天測試MS SQL時,一直無法順利登入,應該沒打錯呀..
檢查:
1. 使用Windows Authentication 登入,發現sa 圖示有向下箭頭,按右鍵屬性改為Enable.
2. 再試仍無法登入,錯誤為:Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456)
Search 登入失敗的錯誤訊息,發現是MS SQL ->Server 屬性-> Security -> Server Authentication 的地方,指定使用"Windows Authentication mode",改為"SQL Server and Windows Authentica mode" 即可.
檢查:
1. 使用Windows Authentication 登入,發現sa 圖示有向下箭頭,按右鍵屬性改為Enable.
2. 再試仍無法登入,錯誤為:Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456)
Search 登入失敗的錯誤訊息,發現是MS SQL ->Server 屬性-> Security -> Server Authentication 的地方,指定使用"Windows Authentication mode",改為"SQL Server and Windows Authentica mode" 即可.
2011年12月18日 星期日
2011 台北富邦馬拉松(2011-12-18)
2011 台北富邦馬拉松: 超多人
隨手拍了一些特別的..
穿著原民服飾的超熱情加油者
據說是某日企老闆.. 雖然天氣涼爽, 但是穿著密不通風的忍者裝, 也著時讓人佩服..感謝台灣人對日本東北及311地震捐助的大和女子
穿什麼鞋最好呢? Nike / Addias ... NO! 穿室內拖最厲害..
超有元氣的靓妹加油團
靓妹加油團二
2011年12月14日 星期三
LotusScript 與Formula結合時,| (Vertical bar) 發揮大功用.
每當純用LotusScript 來做類似@DBColumn 或@DBLookup動作時就覺得很不好寫..
比如:
Search "Ref001" view的第一個Column 的動作
要先Search 出所有Document,取得第一筆, 取出第一個Column的欄位值到暫存列, 過慮是否重複,再取下一筆, 最後再排序.... ,往往一行@DBColumn 的動作,就要寫很久..
但其實 LotusScript 是可以結合 Formula 的, 只要透過Evaluate 及 | (Vertical bar) .
Formula 寫法如下: @DbColumn("":"NoCache";"":"";"REF001";1)
在 LotusScript 寫時, 一行只能出現兩個雙引號("), 如果套用有些語言處理雙引號的方法是在前面加上反斜線( \ ), 這會讓閱讀性大幅降低.
以LotusScript的作法是使用 | 來夾 ,經由 | 夾起來後, 不管多少個雙引號都視為字串, 可方便的加上變數.
Formula 的寫法改寫為LotusScript 也只要兩~三行即可完成:
Dim vrColumn As Variant , tmpstr as string
tmpstr = mailto:%7C@DbColumn(%22%22:%22NoCache";"| +db.Server+ |":"|+Ct_Replace(db.FilePath,"\","file://%22)+%7c%22;%22ref001%22;1/)|
varColumn = Evaluate(tmpstr)
排序也只要在@Sort 加到@DBColumn前即可.
有的人堅持LotusScript 就是要只用LotusScript , 寫Formula 就是 Low, 但我覺得方便性及可讀性最重要..不一定寫的最多行就是最厲害.
比如:
Search "Ref001" view的第一個Column 的動作
要先Search 出所有Document,取得第一筆, 取出第一個Column的欄位值到暫存列, 過慮是否重複,再取下一筆, 最後再排序.... ,往往一行@DBColumn 的動作,就要寫很久..
但其實 LotusScript 是可以結合 Formula 的, 只要透過Evaluate 及 | (Vertical bar) .
Formula 寫法如下: @DbColumn("":"NoCache";"":"";"REF001";1)
在 LotusScript 寫時, 一行只能出現兩個雙引號("), 如果套用有些語言處理雙引號的方法是在前面加上反斜線( \ ), 這會讓閱讀性大幅降低.
以LotusScript的作法是使用 | 來夾 ,經由 | 夾起來後, 不管多少個雙引號都視為字串, 可方便的加上變數.
Formula 的寫法改寫為LotusScript 也只要兩~三行即可完成:
Dim vrColumn As Variant , tmpstr as string
tmpstr = mailto:%7C@DbColumn(%22%22:%22NoCache";"| +db.Server+ |":"|+Ct_Replace(db.FilePath,"\","file://%22)+%7c%22;%22ref001%22;1/)|
varColumn = Evaluate(tmpstr)
排序也只要在@Sort 加到@DBColumn前即可.
有的人堅持LotusScript 就是要只用LotusScript , 寫Formula 就是 Low, 但我覺得方便性及可讀性最重要..不一定寫的最多行就是最厲害.
2011年12月11日 星期日
Sharepoint 2010 的"要求存取(Request access)"在那兒改?
Sharepoint 2010 針對您沒權限時, 延續已往提供的"要求存取(Request Access)"功能, 可以很方便的以E-Mail 方式通知網站管理者, 預設網站管理者為"主要管理員", 一般是設administrator , 因此Email 通知會是 mailto:administrator@%3Cdomain name>, 但是通常管理網站權限的是"次要管理員", 這時就需要變更"要求存取"的通知對象:
登入網站 Site => 網站動作(Site Actions)=>網站設定(Site Settings)=>網站權限(Site Permissions)=>設定=>存取要求(Manage Access Requests)=>勾選"允許存取申請"(Allow requests for access)並修正傳送存取的Email Address.
登入網站 Site => 網站動作(Site Actions)=>網站設定(Site Settings)=>網站權限(Site Permissions)=>設定=>存取要求(Manage Access Requests)=>勾選"允許存取申請"(Allow requests for access)並修正傳送存取的Email Address.
訂閱:
文章 (Atom)






