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