VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

如何用最快的速度得知某個資料夾內容是否有異動?

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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 樓

發表發表於: 星期一 十一月 05, 2012 2:57 pm    文章主題: 引言回覆

可利用MD5來比對檔案內容
dir /s/b MyDIR | xargs md5sum > a.txt
dir /s/b MyDIR | xargs md5sum > b.txt
假如a.txt<>b.txt,被異動修改

xargs 及 md5sum 是linux的指令,讓windows也可以使用linux命令可參考:
https://github.com/bmatzelle/gow/wiki
或直接下載安裝
https://github.com/downloads/bmatzelle/gow/Gow-0.7.0.exe

_________________
一個喜愛Latte的男人


chilin 在 星期二 十一月 06, 2012 7:53 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
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 樓

發表發表於: 星期二 十一月 06, 2012 2:06 pm    文章主題: 引言回覆

用 win32 api 可以做到。參考這篇看看。
http://msdn.microsoft.com/zh-tw/library/windows/desktop/aa365261%28v=vs.85%29.aspx
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
bx1166



註冊時間: 2011-12-06
文章: 273


第 11 樓

發表發表於: 星期三 十一月 07, 2012 8:56 am    文章主題: 引言回覆

我想樓主問這個題目

主要是要監視這個資料夾的一切更動 包括原來是什麼 現在改成了什麼

什麼被刪除了 又添加了什麼 整個資料的詳細內容 我覺得從源頭著手 紀錄一切

還有想辦法 阻止別讓別的程式來更動這些資料 也許也是另一個選擇
回頂端
檢視會員個人資料 發送私人訊息
goodnight



註冊時間: 2008-10-13
文章: 473
來自: 台南市

第 12 樓

發表發表於: 星期五 十一月 09, 2012 1:54 pm    文章主題: 引言回覆

如果是在 win server 聽說是可以做到的, 可以記錄在 log 裡
_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
Austan



註冊時間: 2005-08-01
文章: 8


第 13 樓

發表發表於: 星期五 十一月 09, 2012 6:04 pm    文章主題: 引言回覆

10樓那個 API 就是Windows 上的標準作法,

任何的異動包含, delete 都會觸發, 很好用. 只是我不知要如何用 Foxpro 來做,
我都是用 Delphi 來做 . 看有沒有高手用 Foxrpro 的 code 來 寫 Smile
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作