Jump to content
Sign in to follow this  
max.santiago

Verificar se uma pasta tem novos arquivos

Recommended Posts

Pessoal, boa tarde!

 

Gostaria de tirar uma dúvida: Eu estou fazendo um código para verificar se uma pasta recebe novos arquivos, após este arquivo é movido para uma outra pasta.

Estou usando a função _FileListToArray. Ela funciona somente quando o arquivo já está na pasta, mas quando é movido o arquivo para a pasta o script não pega o arquivo.

Se puderem me ajudar, agradeço muito...

Segue o script:

 

 

#include <File.au3>
#include <Date.au3>
#include <Array.au3>
Local $PastaProc = ("\\servidor\Aplicativos\executaveis_carga\CARGAS_DOC\MIGRACAO_JANDIRA\")
Local $PastaLog = ("\\servidor\Aplicativos\executaveis_carga\CARGAS_DOC\MIGRACAO_JANDIRA\LogErro\")
Local $mes = _DateToMonth(@MON, 2)
Local $PastaSaida = ("\\servidor2\ti\PRODUCAO\Backup_Cargas\MANHA\Migracao_Jandira\CARGA\" & @YEAR & "\" & $mes & "\" & @MDAY & "-" & @MON & "-" & @YEAR & "\")
Local $arq = _FileListToArray($PastaProc, "*.txt")
Local $arq2 = _FileListToArray($PastaProc, "CAIXASGD.TXT")
Local $arq3 = _FileListToArray($PastaLog, "*.log")
Dim $cont = 0
Local $fim = True
While _NowTime() < "16:30:00"
 For $i = 1 To UBound($arq)
   If FileExists($PastaProc & $arq[$i]) Then
   Local $mensagem = MsgBox(4160, "MIGRAÇÃO JANDIRA", "CHEGOU CARGA!")
   If $mensagem =  $IDOK Then
   FileMove($PastaProc & $arq[$i], $PastaProc & "CAIXASGD" & ".TXT")
   Sleep(1000)
   Programa()
  EndIf
   EndIf
   Next
;~    Sleep(10000)
   WEnd
Func Programa()
   Local $mensagem2 = MsgBox(4164,"MIGRAÇÃO JANDIRA", "Executar o processamento da carga?")
If $mensagem2 = $IDYES Then
ShellExecuteWait("\\servidor3\Programas2\executaveis_carga\CARGAS_DOC\MIGRACAO_JANDIRA\SQLLDR_CARGA.bat")
MsgBox(64, "MIGRAÇÃO JANDIRA", "Executar a procedure PRC_CARREGA_MIGRA_JAND no Menu Interfile")
   Sleep(5000)
Move()
Else
   Exit
   EndIf
EndFunc




;~    Func Rename()
;~    For $i In $arq
;~    If FileExists($PastaProc & $arq[$i]) Then
;~    FileMove($PastaProc & $arq[$i], $PastaProc & "CAIXASGD.TXT")
;~    EndIf
;~ Next
;~ EndFunc ;Rename()
Func Move()
   For $i = 1 To UBound($arq2) -1
   If FileExists($PastaProc & $arq2[$i]) Then
   FileMove($PastaProc & $arq2[$i], $PastaSaida & "CAIXASGD_" & @MDAY & @MON & @YEAR & "_" & @HOUR & @MIN & @SEC & ".TXT")
   EndIf
Next
For $i = 1 To UBound($arq3) -1
   If FileExists($PastaLog & $arq3[$i]) Then
   FileMove($PastaLog & $arq3[$i], $PastaSaida & "LogErro_" & @MDAY & @MON & @YEAR & "_" & @HOUR & @MIN & @SEC & ".log")
   EndIf
Next
EndFunc ;Move()
Edited by AutoItCoder

Share this post


Link to post
Share on other sites

Saudações @max.santiago!

 

Eu entendi perfeitamente o que você quer, mas não utilize o _FileListToArray, o Windows já tem função pronto para a sua necessidade, e está em uma função do Windows, invocada pela API _WinAPI_ReadDirectoryChanges

 

Estude o exemplo, acredito que é a solução que você procura.

Edited by AutoItCoder
  • Like 1

Share this post


Link to post
Share on other sites

Saudações @max.santiago!

 

Eu entendi perfeitamente o que você quer, mas não utilize o _FileListToArray, o Windows já tem função pronto para a sua necessidade, e está em uma função do Windows, invocada pela API _WinAPI_ReadDirectoryChanges

 

Estude o exemplo, acredito que é a solução que você procura.

@AutoItCoder, muito obrigado pela ajuda. Vou estudar a função e respondo quando tiver êxito. Já deu uma luz rsrsrs. Na verdade estou começando neste mundo e não manjo muito de programação.

 

Aos demais colegas que responderam tbm, muito obrigado!

Share this post


Link to post
Share on other sites

@AutoItCoder, eu fiz um teste com essa API e não deu certo para caminhos de rede (\\servidor\pasta). Localmente ele funciona. Será que é necessário incluir algo no código para dar certo?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×