上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
puby
註冊時間: 2009-04-28 文章: 30
第 1 樓
|
發表於: 星期六 十一月 03, 2012 2:23 pm 文章主題: 如何用最快的速度得知某個資料夾內容是否有異動? |
|
|
小弟想要監視某個資料夾內容是否有異動,不論是資料夾內任何檔案遭新增、修改、刪除。
查詢說明文件後,似乎只找到 ADIR() 這個函數,取得陣列後再依日期、時間排序後,才能取得檔案最後存取時間。
可是這樣做似乎很沒效率,尤其資料夾內檔案很多的時候。
而且又產生了一個問題,刪除的檔案偵測不到 .....
請教各位高手,有無更有效的方式可以達成?
謝謝。 |
|
回頂端 |
|
 |
bx1166
註冊時間: 2011-12-06 文章: 273
第 2 樓
|
發表於: 星期六 十一月 03, 2012 4:26 pm 文章主題: |
|
|
我的經驗是從源頭著手
所有的添加修改刪除 使用者 日期時間 都用一個檔案記錄起來 反正背景資料登記 每個月或者每個星期 登記的檔案就建立一個來避免單一個紀錄過多 這樣子要追蹤就很簡單 這個屬於主管階級的監視程式 由主管的權限去開啟
如果有別的程式來更動 那沒辦法 只有定時去紀錄裡面的檔案內容
來做比較 |
|
回頂端 |
|
 |
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 3 樓
|
發表於: 星期日 十一月 04, 2012 9:03 pm 文章主題: |
|
|
最快的方法,只要一秒鍾
第一次檢查 MyDir
run dir/s/b MyDir > a.txt
然後,把 a.txt 保留起來
之後的每一次監視
只要 dir/s/b MyDir > b.txt
如果 Filetostr(a.txt)<>FileToStr(b.txt)
就是該資料夾內任何檔案有遭新增、修改、刪除了。 |
|
回頂端 |
|
 |
bx1166
註冊時間: 2011-12-06 文章: 273
第 4 樓
|
發表於: 星期一 十一月 05, 2012 9:13 am 文章主題: |
|
|
這也是個方法 很簡單也很好用
可惜, 只是知道檔案被刪了,
不知道什麼時候, 誰, 刪了檔案? |
|
回頂端 |
|
 |
puby
註冊時間: 2009-04-28 文章: 30
第 5 樓
|
發表於: 星期一 十一月 05, 2012 11:35 am 文章主題: |
|
|
bx1166 寫到: | 我的經驗是從源頭著手
所有的添加修改刪除 使用者 日期時間 都用一個檔案記錄起來 反正背景資料登記 每個月或者每個星期 登記的檔案就建立一個來避免單一個紀錄過多 這樣子要追蹤就很簡單 這個屬於主管階級的監視程式 由主管的權限去開啟
如果有別的程式來更動 那沒辦法 只有定時去紀錄裡面的檔案內容
來做比較 |
謝謝大大的意見,可是誠如您所言,「如果有別的程式來更動 那沒辦法」。 |
|
回頂端 |
|
 |
puby
註冊時間: 2009-04-28 文章: 30
第 6 樓
|
發表於: 星期一 十一月 05, 2012 11:42 am 文章主題: |
|
|
ckp6250 寫到: | 最快的方法,只要一秒鍾
第一次檢查 MyDir
run dir/s/b MyDir > a.txt
然後,把 a.txt 保留起來
之後的每一次監視
只要 dir/s/b MyDir > b.txt
如果 Filetostr(a.txt)<>FileToStr(b.txt)
就是該資料夾內任何檔案有遭新增、修改、刪除了。 |
這確實是個好辦法,速度真是快又猛!
可是小弟測試時發現,它對於「檔案內容」遭修改時,偵測不出來。
. |
|
回頂端 |
|
 |
chilin

註冊時間: 2003-10-01 文章: 79 來自: Taipei,Taiwan
第 7 樓
|
|
回頂端 |
|
 |
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 8 樓
|
發表於: 星期一 十一月 05, 2012 3:10 pm 文章主題: |
|
|
puby 寫到: |
可是小弟測試時發現,它對於「檔案內容」遭修改時,偵測不出來。
|
就改成 run dir/s Mydir > a.txt 和 run dir/s Mydir > b.txt
再去比對其中的每個檔案之日期時間或檔案大小
時間可能多花一點,但依然很快 |
|
回頂端 |
|
 |
bx1166
註冊時間: 2011-12-06 文章: 273
第 9 樓
|
發表於: 星期一 十一月 05, 2012 3:40 pm 文章主題: |
|
|
如果電腦的使用者會用很多種程式去存取這個資料夾
那麼要監視所有的異動 只有從 basic I/O 著手才有可能知道,以及監視到每一筆的異動
工程很龐大 需要動到windows系統
如果只是程式裡面的 就上面幾位大大的方法 都可以解決一部分.
只是 有這麼複雜的需求的必要性嗎?
我的另一個經驗是
每天複製到新的資料夾 資料夾就以日期命名
那就整個資料夾的東西都可以拿來比對 ! |
|
回頂端 |
|
 |
elleryq

註冊時間: 2007-06-21 文章: 768
第 10 樓
|
|
回頂端 |
|
 |
bx1166
註冊時間: 2011-12-06 文章: 273
第 11 樓
|
發表於: 星期三 十一月 07, 2012 8:56 am 文章主題: |
|
|
我想樓主問這個題目
主要是要監視這個資料夾的一切更動 包括原來是什麼 現在改成了什麼
什麼被刪除了 又添加了什麼 整個資料的詳細內容 我覺得從源頭著手 紀錄一切
還有想辦法 阻止別讓別的程式來更動這些資料 也許也是另一個選擇 |
|
回頂端 |
|
 |
goodnight

註冊時間: 2008-10-13 文章: 473 來自: 台南市
第 12 樓
|
|
回頂端 |
|
 |
Austan
註冊時間: 2005-08-01 文章: 8
第 13 樓
|
發表於: 星期五 十一月 09, 2012 6:04 pm 文章主題: |
|
|
10樓那個 API 就是Windows 上的標準作法,
任何的異動包含, delete 都會觸發, 很好用. 只是我不知要如何用 Foxpro 來做,
我都是用 Delphi 來做 . 看有沒有高手用 Foxrpro 的 code 來 寫  |
|
回頂端 |
|
 |
|