Page 1 of 1

Hora y Fecha de un fichero en FTP

PostPosted: Mon Apr 14, 2008 11:33 am
by softruz
Muy buenas, tengo problemas a la hora de recoger la fecha y hora de un fichero en un servidor ftp mediante esta funcion.

method ReadFiles( cMask ) class CDIftp

local hFTPDir, aFiles := {}
local oWin32FindData, cBuffer

DEFAULT cMask := "*.*"

STRUCT oWin32FindData
MEMBER nFileAttributes AS DWORD
MEMBER nCreationTime AS STRING LEN 9
MEMBER nLastReadAccess AS STRING LEN 8
MEMBER nLastWriteAccess AS STRING LEN 8
MEMBER nSizeHight AS DWORD
MEMBER nSizeLow AS DWORD
MEMBER nReserved0 AS DWORD
MEMBER nReserved1 AS DWORD
MEMBER cFileName AS STRING LEN 260
MEMBER cAltName AS STRING LEN 14
ENDSTRUCT

if ::oFTP != nil
cBuffer = oWin32FindData:cBuffer
hFTPDir = FtpFindFirstFile( ::oFTP, cMask, @cBuffer, 0, 0 )
oWin32FindData:cBuffer = cBuffer
if ! Empty( oWin32FindData:cFileName )
AAdd( aFiles, { oWin32FindData:cFileName,;
oWin32FindData:nSizeLow,;
oWin32FindData:nLastWriteAccess,;
oWin32FindData:nCreationTime,;
oWin32FindData:nFileAttributes} )
while InternetFindNextFile( hFTPDir, @cBuffer )
oWin32FindData:cBuffer = cBuffer
AAdd( aFiles, { oWin32FindData:cFileName,;
oWin32FindData:nSizeLow,;
oWin32FindData:nLastWriteAccess,;
oWin32FindData:nCreationTime,;
oWin32FindData:nFileAttributes } )
end
end if
InternetCloseHandle( hFTPDir )
end if

return aFiles

Lo que me sucede es que los datos
oWin32FindData:nLastWriteAccess,;
oWin32FindData:nCreationTime,;
están vacios y en el servidor ftp el archivo tiene hora y fecha.

¿Sabeis como puedo conseguir estos datos?

Un Saludo.

PostPosted: Mon Apr 14, 2008 6:37 pm
by JmGarcia
Yo las fechas, horas y tamaños los recojo con el RemoteShell y comandos de Unix (mi servidor FTP es Unix)

Code: Select all  Expand view
function main()
local cTexto,oRemoteShell:=CreateObject("WScript.Shell")
cTexto:="cmd /C rsh 999.999.999.999 -l usuario -n ls -al /mascara > dir.txt"
/// 999.999.999.999 es la IP del servidor FTP
oRemoteShell:Run(cTexto,0,.F.)
oRemoteShell:=nil
// En el fichero dir.txt tienes todo
return nil


El fichero DIR.TXT lo tratas con StrToken y separas las columnas.

El fichero DIR.TXT tiene algo asi:
Code: Select all  Expand view
drwxr-xr-x 14 0        0        4096  May  2 04:41 .
drwxr-xr-x 14 0        0        4096  May  2 04:41 ..
drw-r--r--  2 0        0        4096  May  2 05:05 Share
drw-r--r-- 27 0        0        12288  May  2 03:22 WEB
-rw-r--r--  1 0        0        1512  Mar 30 14:59 .ftpd.conf
drw-r--r--  2 0        0        4096  May  2 01:00 invitado
drw-r--r--  7 0        0        4096  Jan  4 2007  TDT
drw-r--r--  6 0        0        4096  May  1 19:02 Software
drw-r--r--  4 0        0        4096  May  1 22:14 Fotos
-rw-r--r--  1 0        0        2865239  Jan  4 2007  ntx_chset.h
-rw-r--r--  1 0        0        822  Mar 30 2008  md5sum.txt.asc
-rw-r--r--  1 0        0        658  Mar 30 2008  sha1sum.txt
-rw-r--r--  1 0        0        894  Mar 30 2008  sha1sum.txt.asc
etc, etc, etc...


A cada línea le aplicas StrToken, asi:
StrToken(cLinea,5," ") ---> Tamaño
StrToken(cLinea,6," ") ---> Mes
StrToken(cLinea,7," ") ---> Día
StrToken(cLinea,8," ") ---> Año
StrToken(cLinea,9," ") ---> Nombre
etc, etc, etc...

rE:

PostPosted: Tue Apr 15, 2008 10:41 am
by softruz
Muchas gracias por la contestación, entonces si lo haces con comandos de unix como podríamos coger la version del fichero.exe.

Un Saludo.

PostPosted: Tue Apr 15, 2008 10:48 am
by Antonio Linares
Revisa fwh\samples\FtpDir.prg

rE:

PostPosted: Tue Apr 15, 2008 11:34 am
by softruz
He revisado TFTP pero dicha clase no nos proporciona la version, por eso digo que con un comando de unix lo mismo si.



Un Saludo.

PostPosted: Tue Apr 15, 2008 12:30 pm
by Antonio Linares
El método Directory() proporciona la misma información que la función Directory() de Clipper. Solo tienes que revisar la fecha y la hora.

PostPosted: Tue Apr 15, 2008 12:32 pm
by Antonio Linares
AEval( aFiles, { | aFile | MsgInfo( aFile[ 1 ], aFile[ 3 ] ) } )

Re:

PostPosted: Thu Apr 17, 2008 9:54 am
by softruz
Gracias Antonio, pero sigo sin conseguir la Version del Fichero, ¿Como se podría hacer?

Un Saludo.

Re:

PostPosted: Thu Apr 17, 2008 10:02 am
by softruz
JmGarcia, tengo una duda sobre el comando que has expuesto antes, lo he utilizado pero en dir.txt no me introduce ninguna informacion, ¿me podrias decir que parametros tengo que introducir para que me funcione?

Un Saludo.