Buscar pasta via JOB

Estou tentando criar um codigo fonte que busca uma determinada pasta sendo ela no protheus_data ou system, como o fonte é executado via JOB cadastrado no ini do appserver as funções de busca de pasta Directory e aDir, nao funciona. Executando a rotina via tela funciona perfeitamente.

Gostaria de saber se existe outra função que executada via JOB consiga encontrar um diretório passado como parâmetro. a necessidade existe pois preciso criar um JOB que le uma pasta com arquivos.txt envie para um servidor ftp e depois mova os arquivos enviados.

1 curtida

Olá,

Ambas as funções funcionaram corretamente em threads sem interface.

A mudança no comportamento, é que uma thread de job, não vai conseguir acessar o C:\ por exemplo, mas encontrar arquivos dentro da rootpath, startpath, ambas funcionaram muito bem.

Abaixo o código que testei e tive resultados positivos com ambas as funções:

//------------------------------------------------------------------
/*/{Protheus.doc} filesJob
Chama as funções de leitura de arquivos em job

@author Dan M
@since 10/03/2025
@version 1.0
/*/
//-------------------------------------------------------------------
user function filesJob()
StartJob("u_aDirFiles", GetEnvServer(), .T.)
StartJob("u_DirFiles", GetEnvServer(), .F.)
return

//------------------------------------------------------------------
/*/{Protheus.doc} aDirFiles
Lê os arquivos do rootpath e exibe no console via aDir

@author Dan M
@since 10/03/2025
@version 1.0
/*/
//-------------------------------------------------------------------
user function aDirFiles()
local nQtd as numeric
local aFiles as array
local nI as numeric

aFiles := {}

nQtd := aDir("/*", @aFiles)

for nI := 1 to Len(aFiles)
    Conout(aFiles[nI])
next

aSize(aFiles, 0)
aFiles := nil

return

//------------------------------------------------------------------
/*/{Protheus.doc} DirFiles
Lê os arquivos do rootpath e exibe no console via Directory

@author Dan M
@since 10/03/2025
@version 1.0
/*/
//-------------------------------------------------------------------
user function DirFiles
local nI as numeric
local nJ as numeric
local aFiles as array

aFiles := Directory("/*")

for nI := 1 to Len(aFiles)
    for nJ := 1 to Len(aFiles[nI])
        Conout(aFiles[nI][nJ])
    next
next

aSize(aFiles, 0)
aFiles := nil

return

Documentações:
ADir - TOTVSTEC - TDN
Directory - TOTVSTEC - TDN