| 上一篇主題 :: 下一篇主題   | 
	
	
	
		| 發表人 | 
		內容 | 
	
	
		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 來 寫   | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		 |