当前位置: 代码迷 >> PB >> 好手们帮忙看下,标红的那段,循环第二次的时候就执行不成功了,只能解压一个文件
  详细解决方案

好手们帮忙看下,标红的那段,循环第二次的时候就执行不成功了,只能解压一个文件

热度:87   发布时间:2016-04-29 05:33:52.0
高手们帮忙看下,标红的那段,循环第二次的时候就执行不成功了,只能解压一个文件
本帖最后由 zfxiang 于 2013-09-22 20:26:35 编辑
string ls_name,ls_path,ls_dwname,ls_filename,ls_rarname,ls_windowname
int li_row,li_i,li_rowcount,li_ii,li_mxi,li_mxrowcount
long ll_handle
datetime ldt_day
string ls_day,ls_txtpath,ls_cznr

lb_1.reset()



ldt_day = f_getdatetime()
ls_day = string(date(ldt_day),'yyyymmdd')
ls_path = gs_syspath + "\" + ls_day
lb_1.DirList(ls_path + "\*.rar", 0)


li_rowcount = lb_1.totalitems( )




FOR li_i = 1 TO li_rowcount
ls_rarname = lb_1.text(li_i)
ls_txtpath = ls_path + "\" +left(ls_rarname,len(ls_rarname) - 4) + "\"
f_message( gs_syspath + "\rar.exe x -pak98 -o+ " + ls_rarname + " " + ls_path + " " + ls_txtpath)
li_ii = run(gs_syspath + "\rar.exe x -pak98 -o+ " + ls_rarname + " " + ls_path + " " + ls_txtpath,Maximized!)
if li_ii <> 1 then
messagebox('警告!','解压文件出错!')
disconnect using sqlca;
halt Close;
ELSE
ls_windowname = gs_syspath + "\rar.exe"
f_message("run rar")
// messagebox('',ls_windowname)
ll_handle = FindWindowA(0,ls_windowname)
// messagebox('111',ll_handle)
//循环至窗口打开 
Do While ll_handle = 0
ll_handle = FindWindowA(0,ls_windowname) // 
// messagebox('222',ll_handle)
Yield() // 
Loop
//等待窗口关闭 
Do While isWindow(ll_handle) <> False

Yield()
Loop
lb_2.reset( )
lb_2.DirList(ls_txtpath + "*.txt", 0)


li_mxrowcount = lb_2.totalitems( )
FOR li_mxi = 1 TO li_mxrowcount
ls_name = lb_2.text(li_mxi)
dw_data.dataobject = left(ls_name,len(ls_name)-4)
dw_data.settransobject( sqlca)
f_begin_tran(sqlca)
dw_data.importfile(ls_txtpath + ls_name)
int li_aa
li_aa = dw_data.rowcount( )
IF dw_data.update() = 1 THEN
f_commit_tran(sqlca)
ls_cznr = left(ls_name,len(ls_name)-4) + '更新成功'
INSERT INTO sys_ftp_log (Name,ip,cznr,guest) Values('update',:gs_ip,:ls_cznr,:gs_guest);
ELSE
f_rollback_tran(sqlca)
ls_cznr = left(ls_name,len(ls_name)-4) + '更新失败'
INSERT INTO sys_ftp_log (Name,ip,cznr,guest) Values('update',:gs_ip,:ls_cznr,:gs_guest);
END IF
NEXT
end if
NEXT


只能解压成功一个文件,解压第二个的时候就不成功了,但我把这个命令显示出来,是对的,但就是执行不成功,不知道是什么问题,是RAR命令的问题,还是RUN命令执行一次要释放什么的?求高手解答


------解决方案--------------------
li_ii = run(gs_syspath + "\rar.exe x -pak98 -o+ " + ls_rarname + " " + ls_path + " " + ls_txtpath,Maximized!)

把这句话后加一个sleep(10),然后执行一下,看是不是因为rar未执行完成引起的
  相关解决方案