  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 1 樓
  | 
		
			
				 發表於: 星期一 十二月 04, 2017 6:13 pm    文章主題: XCOPY過程小問題 | 
				     | 
			 
			
				
  | 
			 
			
				我自己寫了一個備份程式來備份照片資料夾!爬文發現不能單純用copy指令 
 
我的介面是用Combo選擇磁碟機和目錄位置
 
確定的command 中Click 指令如下
 
SET SAFETY OFF
 
LOCAL MYDRI
 
PUBLIC DIRE
 
MYDRI=ALLTRIM(THISFORM.COMBO1.VALUE)
 
DIR=SUBSTR(LOWER(MYDRI),1,9)+'\image'
 
 
DBF_PATH1='&DIR'
 
IF NOT DIRE(DBF_PATH1)
 
	MD (DBF_PATH1)
 
ENDIF
 
 
DIRE="d:\photo &DBF_PATH1"
 
XCOPY(DIRE)
 
 
MESSAGEBOX("BACKUP COMPLETE!",0+48,"提示資訊")
 
---------------------------------------------------------------------------
 
參考Ruey兄寫的Function
 
 
FUNCTION XCopy 
 
   PARAMETERS tcParam 
 
   LOCAL lRet 
 
    
 
   DECLARE INTEGER ShellExecute IN shell32.DLL ; 
 
          INTEGER HWND,; 
 
      STRING lpszOP, ; 
 
      STRING lpszFile, ; 
 
      STRING lpszParams, ; 
 
      STRING lpszDir, ; 
 
      INTEGER fsshowcmd 
 
 
   WAIT WIND "複製中..." NOWAIT 
 
   lRet=ShellExecute(0,"Open","XCOPY.EXE"," "+tcParam+" /e/i/y/h/r","",1) 
 
   WAIT CLEAR 
 
     
 
   RETURN lRet 
 
 
ENDFUNC
 
 
我的問題是執行都沒有問題!呼叫XCOPY執行時因為檔案很多!cmd介面下還未拷貝完! MESSAGEBOX已經跳完成!!我想一定是我指令放錯位置!我功力粗淺望求各位高手指教 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		RexChen
 
 
  註冊時間: 2005-11-08 文章: 5 來自: Taiwan
  第 2 樓
  | 
		
			
				 發表於: 星期一 十二月 04, 2017 11:32 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				確定xcopy執行完畢後,才執行message box
 
 
Cc=xcopy(dire)
 
If !Empty(cc) | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		RexChen
 
 
  註冊時間: 2005-11-08 文章: 5 來自: Taiwan
  第 3 樓
  | 
		
			
				 發表於: 星期一 十二月 04, 2017 11:33 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				確定xcopy執行完畢後,才執行message box
 
 
Cc=xcopy(dire)
 
If !Empty(cc)
 
Messagebox(.....)
 
Endif | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 4 樓
  | 
		
			
				 發表於: 星期二 十二月 05, 2017 2:06 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				to RexChen
 
我按照你的方法其實我寫的一樣!  都會在XCOPY命令未完成就先跳Messagebox訊息!不知道是不是我資質駑鈍沒有理解你說的
 
------------------
 
DIRE="d:\photo &DBF_PATH1"
 
CC=XCOPY(DIRE)
 
IF !EMPTY(CC)
 
	MESSAGEBOX("BACKUP COMPLETE!",0+48,"提示資訊") 
 
-----------------------------------------------------------------
 
其實我是知道任務有完成!只是有看到其他軟體是VFP寫的!他們備分就是會copy完才跳訊息!還是我這種方法是無法達成
 
 
謝謝你的幫忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		perry
 
 
  註冊時間: 2014-07-20 文章: 203
 
  第 5 樓
  | 
		
			
				 發表於: 星期二 十二月 05, 2017 9:24 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				RUN or ! or winscript.shell.run or  ShellExecute
 
基本上是執行外部程序的動作,
 
在VFP中只是一道指令,
 
完成與否和不是 VFP 所能掌控!! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 6 樓
  | 
		
			
				 發表於: 星期三 十二月 06, 2017 3:20 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				謝謝PERRY 兄提醒!
 
爬文http://vfp.sunyear.com.tw/viewtopic.php?t=454&highlight=ShellExecute 中5樓朱大的提醒! 就試著google發現在http://www.tek-tips.com/viewthread.cfm?qid=1753976中有我的答案! 所以我放棄ShellExecute FUNCTION 來作xcopy!改用WSCRIPT.SHELL就可以了
 
 
----------------------------------------------------------------------------
 
WSHSHELL = CREATEOBJECT("WSCRIPT.SHELL")
 
Y=' /D/K/E/Y/C/I/H'
 
 
F='XCOPY '+DIRE+Y
 
 
RC = WSHSHELL.RUN((F),3,.T.)
 
 
WSHSELL=NULL
 
 
MESSAGEBOX("BACKUP COMPLETE!",0+48,"提示資訊")
 
------------------------------------------------------------------------
 
上面會執行完才跳完成的提示!!!謝謝各位的幫助
 
 
or---------------------------------------------------------------------
 
        Y=' /D/K/E/Y/C/I/H'
 
	
 
	F='XCOPY '+DIRE+Y
 
		
 
	RUN &F
 
MESSAGEBOX("BACKUP COMPLETE!",0+48,"提示資訊") | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		amd
 
 
  註冊時間: 2003-07-20 文章: 54
 
  第 7 樓
  | 
		
			
				 發表於: 星期三 十二月 06, 2017 9:19 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				小弟寫的,很簡單的備份!
 
 
lcmsg = "資 料 庫 備 份 中,請 稍 待!"
 
		Wait window lcmsg noclear nowait at srow()/7,(scols()-len(lcmsg))/2
 
Run  XCOPY 資料庫\*.* c:\x資料庫備份\   /s /e /q /y   
 
Wait clear | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |