Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

VBS: ordenar por fecha de creacion

Estas en el tema de VBS: ordenar por fecha de creacion en el foro de Visual Basic clásico en Foros del Web. como puedo ordenar la salida de datos de un script??? Estoy listando unos ficheros de una carpeta y me gustaria que se ordenaran segun la ...
  #1 (permalink)  
Antiguo 15/05/2008, 10:09
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
VBS: ordenar por fecha de creacion

como puedo ordenar la salida de datos de un script???
Estoy listando unos ficheros de una carpeta y me gustaria que se ordenaran segun la fecha de modificacion.

Código:
Option Explicit 
WScript.Echo ShowFolderList("C:\Documents and Settings\")
Function ShowFolderList(folderspec)
   Dim fso, f, f1, fc, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.SubFolders
   For Each f1 In fc
      s = s & f1.name &  " (" & f1.DateLastModified &  ")"
      s = s & VbCrLf 
   Next
   ShowFolderList = s
End Function
  #2 (permalink)  
Antiguo 16/05/2008, 02:27
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: VBS: ordenar por fecha de creacion

alguna ayuda?
  #3 (permalink)  
Antiguo 16/05/2008, 04:34
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: VBS: ordenar por fecha de creacion

y en Visual Basic, se podria hacer? o conoceis algo???
  #4 (permalink)  
Antiguo 16/05/2008, 11:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: VBS: ordenar por fecha de creacion

En Visual Basic la idea que tengo sería así:
Código:
 
Function ShowFolderList(folderspec)
Dim fso, f, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
Set fc = f.SubFolders
For Each f1 In fc
s = OrderDate(s, f1.name & " (" & f1.DateLastModified & ")" & vbCrLf)
Next
ShowFolderList = s
End Function
Function OrderDate(s As String, NewData As String) As String
Dim LeftText As String
Dim LastFind As Integer
Do
LastFind = InStr(LastFind + 1, s, vbCrLf)
If LastFind = 0 Then Exit Do
If GetDate(NewData) <= GetDate(Mid(s, Len(LeftText) + 1, LastFind - Len(LeftText))) Then
OrderDate = LeftText & NewData & Right(s, Len(s) - Len(LeftText))
Exit Function
End If
LeftText = Left(s, LastFind)
Loop
OrderDate = NewData
End Function
Function GetDate(s As String) As Date
GetDate = CDate(Mid(s, Len(s) - 11, 10))
End Function
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 20/05/2008, 01:09
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: VBS: ordenar por fecha de creacion

y para especificar una ruta?
esto se daria el caso cuando tengo una conexion ya hecha, hacia el PC, es decir, si en Mi PC aparece la unidad montada.
Para entrar tendria que hacer algo como:

ShowFolderList "\\519004PC\c$\Documents and Settings\"

?????
  #6 (permalink)  
Antiguo 20/05/2008, 06:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: VBS: ordenar por fecha de creacion

Cita:
Iniciado por guif Ver Mensaje
y para especificar una ruta?
esto se daria el caso cuando tengo una conexion ya hecha, hacia el PC, es decir, si en Mi PC aparece la unidad montada.
Para entrar tendria que hacer algo como:

ShowFolderList "\\519004PC\c$\Documents and Settings\"

?????
haciendo como mencionaste no creo que tengas problemas, o te da algún error...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 20/05/2008, 07:08
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: VBS: ordenar por fecha de creacion

si. me da un error: "ByRef argument type mismatch"

en la linea:
s = OrderDate(s, f1.Name & " (" & f1.DateLastModified & ")" & vbCrLf)

igualmente, si quiero que la salida sea por un listbox pondria esto no?

listbox1.additem OrderDate([s, f1.Name & " (" & f1.DateLastModified & ")"
  #8 (permalink)  
Antiguo 20/05/2008, 07:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: VBS: ordenar por fecha de creacion

Cita:
Iniciado por guif Ver Mensaje
si. me da un error: "ByRef argument type mismatch"

en la linea:
s = OrderDate(s, f1.Name & " (" & f1.DateLastModified & ")" & vbCrLf)

igualmente, si quiero que la salida sea por un listbox pondria esto no?

listbox1.additem OrderDate([s, f1.Name & " (" & f1.DateLastModified & ")"
Coloca:
Código:
 
(ByVal s As String, ByVal NewData As String)
en vez de:
Código:
 
(s As String, NewData As String)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 20/05/2008, 07:38
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: VBS: ordenar por fecha de creacion

ahora en la linea:

Function GetDate(s As String) As Date
GetDate = CDate(Mid(s, Len(s) - 11, 10))
End Function

me marca: getdate = 0:00:00
  #10 (permalink)  
Antiguo 20/05/2008, 07:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: VBS: ordenar por fecha de creacion

Cita:
Iniciado por guif Ver Mensaje
ahora en la linea:

Function GetDate(s As String) As Date
GetDate = CDate(Mid(s, Len(s) - 11, 10))
End Function

me marca: getdate = 0:00:00
tal vez porque en red no te devuelva la fecha de modificación... intenta ejecutar paso a paso a ver qué fecha te devuelva...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:06.