|
Aqui eu fa�o dessa forma, e funciona bem...
Function: fCompararDir ����������� Description: ����������� Returns ����������������������� Boolean: ����������� Parameters ����������������������� String: sp_DirOrigem ����������������������� String: sp_DirDestino ����������� Static Variables ����������� Local variables ����������������������� Number: nIndice ����������������������� Number: nRetorno ����������������������� Number: nCount ����������������������� String: sDirAux_O ����������������������� String: sDirAux_D ����������������������� ! ����������������������� String: sVt_DirOrigem[*] ����������������������� Date/Time: dVt_DirOrigem[*] ����������������������� Number: nVt_DirOrigem[*] ����������� Actions ����������������������� Call SalFileCreateDirectory( sp_DirDestino ) ����������������������� Call fCarregaCopia( sp_DirOrigem, sp_DirDestino ) ����������������������� ! ����������������������� Call VisArrayFillNumber( nVt_DirOrigem, NUMBER_Null, 5000 ) ����������������������� Call VisArrayFillDateTime( dVt_DirOrigem, DATETIME_Null, 5000 ) ����������������������� Call VisArrayFillString( sVt_DirOrigem, "", 5000 ) ����������������������� ! ����������������������� Set nRetorno = VisDosEnumDirInfo( sp_DirOrigem || "*.*", sVt_DirOrigem, dVt_DirOrigem, nVt_DirOrigem ) ����������������������� Set nIndice = 0 ����������������������� ! ����������������������� While sVt_DirOrigem[ nIndice ] != "" ���������������������������������� Set sDirAux_O = sp_DirOrigem ||� sVt_DirOrigem[ nIndice ] || "\\" ���������������������������������� Set sDirAux_D = sp_DirDestino || sVt_DirOrigem[ nIndice ] || "\\" ���������������������������������� Call fCompararDir( sDirAux_O, sDirAux_D ) ���������������������������������� Set nIndice = nIndice + 1 ����������������������� ! ����������������������� Return 1 Function: fCarregaCopia ����������� Description: ����������� Returns ����������������������� Boolean: ����������� Parameters ����������������������� String: sp_DirOrigem ����������������������� String: sp_DirDestino ����������� Static Variables ����������� Local variables ����������������������� String: sVt_ArqOrigem[*] ����������������������� Number: nVt_ArqOrigemTam[*] ����������������������� Date/Time: dVt_ArqOrigem[*] ����������������������� Number: nVt_ArqOrigemAtrib[*] ����������������������� ! ����������������������� String: sVt_ArqDestino[*] ����������������������� Number: nVt_ArqDestinoTam[*] ����������������������� Date/Time: dVt_ArqDestino[*] ����������������������� Number: nVt_ArqDestinoAtrib[*] ����������������������� ! ����������������������� Number: nIndice ����������������������� Number: nRetorno ����������������������� Number: nLinha ����������������������� Number: nIndice2 ����������������������� Number: nProcura ����������������������� Date/Time: dDtAux ����������������������� Window Handle: hWndAviso ����������� Actions ����������������������� ! ����������������������� ! ����������������������� Call VisArrayFillDateTime( dVt_ArqDestino, DATETIME_Null, 5000 ) ����������������������� Call VisArrayFillDateTime( dVt_ArqOrigem, DATETIME_Null, 5000 ) ����������������������� ! ����������������������� Call VisArrayFillNumber( nVt_ArqDestinoTam, NUMBER_Null, 5000 ) ����������������������� Call VisArrayFillNumber( nVt_ArqOrigemTam, NUMBER_Null, 5000 ) ����������������������� ! ����������������������� Call VisArrayFillNumber( nVt_ArqOrigemAtrib, NUMBER_Null, 5000 ) ����������������������� Call VisArrayFillNumber( nVt_ArqDestinoAtrib, NUMBER_Null, 5000 ) ����������������������� ! ����������������������� Call VisArrayFillString( sVt_ArqDestino, "", 5000 ) ����������������������� Call VisArrayFillString( sVt_ArqOrigem, "", 5000 ) ����������������������� ! ����������������������� Set nRetorno = VisDosEnumFileInfo( sp_DirDestino || "*.*", FA_Standard, sVt_ArqDestino, nVt_ArqDestinoTam, dVt_ArqDestino, nVt_ArqDestinoAtrib ) ����������������������� Set nRetorno = VisDosEnumFileInfo( sp_DirOrigem� || "*.*", FA_Standard, sVt_ArqOrigem, nVt_ArqOrigemTam, dVt_ArqOrigem, nVt_ArqOrigemAtrib ) ����������������������� ! ����������������������� ! Carregando dados do Destino e ajustando a data do arquivo ����������������������� ! ����������������������� Set nIndice = 0 ����������������������� Set nLinha = TBL_MaxRow ����������������������� While sVt_ArqDestino[ nIndice ] != "" ���������������������������������� ! ���������������������������������� Call SalFileGetDateTime( sp_DirDestino || sVt_ArqDestino[ nIndice ], dDtAux ) ���������������������������������� ! ���������������������������������� Set dVt_ArqDestino[ nIndice ] �� �= dDtAux ���������������������������������� Set nIndice ����������������� = nIndice + 1 ����������������������� ! ����������������������� ! Carregando dados da Origem, ajustando a data do arquivo e comparando arquivos ����������������������� ! ����������������������� Set nLinha = TBL_MaxRow ����������������������� Set nIndice = 0 ����������������������� While sVt_ArqOrigem[ nIndice ] != "" ���������������������������������� ! ���������������������������������� Call SalFileGetDateTime( sp_DirOrigem || sVt_ArqOrigem[ nIndice ], dDtAux ) ���������������������������������� ! ���������������������������������� Set dVt_ArqOrigem[ nIndice ] ��� = dDtAux ���������������������������������� ! ���������������������������������� Set nProcura = VisArrayFindString( sVt_ArqDestino, sVt_ArqOrigem[ nIndice ] ) ���������������������������������� If ( nProcura < 0 ) �������� Or ������ ( ( nVt_ArqOrigemTam[ nIndice ] != nVt_ArqDestinoTam[ nProcura ] ) ��������������������������������������������������������������������������������� And ���� ( dVt_ArqOrigem[ nIndice ] ������� �!= dVt_ArqDestino[ nProcura ] ) ) ���������������������������������������������������������� ����������������������� Or ������ ( dVt_ArqOrigem[ nIndice ] ������� �> dVt_ArqDestino[ nProcura ] ) ���������������������������������������������� Set hWndAviso = SalCreateWindow( dlgAviso, hWndForm, "Aguarde... Copiando arquivo " || sp_DirOrigem || sVt_ArqOrigem[ nIndice ] || " para " || sp_DirDestino || sVt_ArqOrigem[ nIndice ] ) ���������������������������������������������� Call SalFileCopy( sp_DirOrigem || sVt_ArqOrigem[ nIndice ], sp_DirDestino || sVt_ArqOrigem[ nIndice ], 1 ) ���������������������������������������������� Call SalFileSetDateTime( sp_DirDestino || sVt_ArqOrigem[ nIndice ], dVt_ArqOrigem[ nIndice ] ) ���������������������������������������������� Call SalDestroyWindow( hWndAviso ) ���������������������������������� ! ����������� ����������������������� Set nIndice = nIndice + 1 ����������������������� ! ����������������������� ! Verifica se alguma arquivo do destino foi removido na origem. ���������������������������������������������� Caso afirmativo, remove do destimo. ����������������������� ! ����������������������� Set nLinha = TBL_MaxRow ����������������������� Set nIndice = 0 ����������������������� While sVt_ArqDestino[ nIndice ] != "" ���������������������������������� Set nProcura = VisArrayFindString( sVt_ArqOrigem, sVt_ArqDestino[ nIndice ] ) ���������������������������������� If nProcura < 0 ���������������������������������������������� Set hWndAviso = SalCreateWindow( dlgAviso, hWndForm, "Aguarde... Removendo o arquivo " || sp_DirOrigem || sVt_ArqDestino[ nIndice ] ) ���������������������������������������������� Call VisFileDelete( sVt_ArqDestino[ nIndice ] ) ���������������������������������������������� Call SalDestroyWindow( hWndAviso ) ���������������������������������� ! ���������������������������������� Set nIndice = nIndice + 1 ����������������������� ! ����������������������� Return 1
-----Mensagem original-----
Eu estou fazendo uma rotina que compare os arquivos do servidor com os do cliente. Se a data do servidor for maior ele copia os arquivos. Mas estou com dificuldade em varrer todos os diret�rios e sub. Algu�m tem uma solu��o assim funcionando?
Obrigado pela ajuda
Vladimir
|
- RES: [sqlwin] Erro no Comando VisDosEnu... Fernando Simonetti
- RES: [sqlwin] Erro no Comando VisD... Julio Cesar Dalla Rosa - AlmapBBDO
- Re: RES: [sqlwin] Erro no Coma... Lairton J�nior
- Jose Augusto S. Oliveira
