Public Sub Copiar()
Dim aarchivos As New String[]
Dim unarchivo As String
Dim incrementos As Float
comienzo = Timer
aarchivos.Clear
ProgressBar1.Value = 0
aarchivos = RDir(directoriorigen, "*", gb.File)
incrementos = 1 / aarchivos.Count
For Each unarchivo In aarchivos
ProgressBar1.Value += incrementos
lblStatus.Text = "Copiando " & unarchivo
Wait 0.01
' Para copiar, descomentar
' Copy directoriorigen &/ unarchivo To directoriodestino &/ unarchivo
Next
diferenciadetiempo = Timer - comienzo
Message.Info("Copia completada" & gb.NewLine & "El tiempo que ha tardado en copiar los archivos es: " & Format(diferenciadetiempo, "-#.##") & "s")
Me.Close
End
Public Sub Main()
Dim rutaarchivo As String
'Uso un nombre de archivo que tengo en el disco
rutaarchivo = User.Home &/ "001 The Present Simple of to be.mp3"
With Stat(rutaarchivo)
Print "Tamaño de archivo: " & Round(.Size / 1024); "K"
Print "Tamaño de archivo: " & Round(.Size / 1024 ^ 2); "M"
End With
End
Cita:
Tamaño de archivo: 4458K
Tamaño de archivo: 4M
GridView1 As Gridview
HBox1 As HBox
ButtonCopy As Button
ButtonClose As Button
Spring1 As Spring
sPathFrom As String = User.Home &/ "Downloads" ''Change to the desired folder - Cambiar a la carpeta deseada
sPath As String = "/tmp/XXCopyTestXX" ''THIS FOLDER WILL BE DELETED - ESTA CARPETA SERÁ ELIMINADA
Public Sub Form_Open()
RemoveFiles
BuildForm
End
Public Sub ButtonCopy_Click()
Dim sFileList As String[] = Dir(sPathFrom, "*", gb.File)
Dim fFileStartTimes, fFileFinishTimes As New Float[]
Dim dFileDiff As New Date[]
Dim lFileSize As New Long[]
Dim fStart, fFinish As Float
If Not Exist(sPath) Then Mkdir sPath
For iLoop As Integer = 0 To sFileList.Max
fStart = CFloat(Time())
fFileStartTimes.Add(fStart)
Copy sPathFrom &/ sFileList[iLoop] To sPath &/ sFileList[iLoop]
fFinish = CFloat(Time())
lFileSize.Add(Stat(sPath &/ sFileList[iLoop]).Size)
fFileFinishTimes.Add(fFinish)
dFileDiff.Add(fFinish - fStart)
Me.Title = ("Copying file ") & Str(iLoop + 1) & (" of ") & Str(sFileList.Count)
Next
Me.Title = Application.Name
For iLoop = 0 To sFileList.Max
Inc GridView1.Rows.Count
GridView1[iLoop, 0].Text = sFileList[iLoop]
GridView1[iLoop, 0].Alignment = Align.Left
GridView1[iLoop, 1].Text = CStr(fFileStartTimes[iLoop])
GridView1[iLoop, 1].Alignment = Align.Left
GridView1[iLoop, 2].Text = CStr(fFileFinishTimes[iLoop])
GridView1[iLoop, 2].Alignment = Align.Left
GridView1[iLoop, 3].Text = Format(dFileDiff[iLoop], "nn:ss:uu")
GridView1[iLoop, 3].Alignment = Align.Left
GridView1[iLoop, 4].Text = Str(lFileSize[iLoop] / 1000000) & " MB - (" & Format(lFileSize[iLoop] / 1000000, "0.00 MB)")
GridView1[iLoop, 4].Alignment = Align.Right
Next
GridView1.Columns.Width = -1
End
Public Sub ButtonClose_Click()
RemoveFiles
Me.Close
End
Public Sub RemoveFiles()
Dim sFile As String
If Exist(sPath) Then
For Each sFile In Dir(sPath)
Kill sPath &/ sFile
Next
Rmdir sPath
End If
End
Public Sub BuildForm()
Dim sTitle As String[] = [("File"), ("Start"), ("Stop"), ("Time taken\nmm:ss:uu"), ("Size")]
With Me
.H = 750
.W = 1000
.Arrangement = Arrange.Vertical
.Padding = 5
End With
With GridView1 = New GridView(Me) As "GridView1"
.Columns.Count = 5
.Rows.Count = 0
.Header = GridView.Both
.Expand = True
End With
For iLoop As Integer = 0 To 4
GridView1.Columns[iLoop].Title = sTitle[iLoop]
GridView1.Columns[iLoop].Alignment = Align.Center
Next
With HBox1 = New HBox(Me)
.H = 28
.W = 800
End With
With ButtonClose = New Button(HBox1) As "ButtonClose"
.Text = ("Clo&se")
.W = 100
.H = 28
End With
Spring1 = New Spring(HBox1)
With ButtonCopy = New Button(HBox1) As "ButtonCopy"
.Text = ("&Copy")
.W = 100
.H = 28
End With
End
(27-04-2023, 21:59)guizans escribió: No tengo ni las más remota idea de como medir el tiempo, pero no creo que valga tu fórmula, ya que supongo que dependerá de la velocidad de escritura/lectura del dispositivo. Es decir, no es lo mismo un disco SSD que uno mecánico, que un USB 2.1 que un USB 3.0. También dependerá de las tareas que está haciendo el ordenador en ese momento, si la CPU está muy ocupada supongo que la escritura será más lenta. No debe ser fácil. Recuerdo que cuando usaba Windows los tiempos que marcaba el administrador de archivos variaban desde unos segundos hasta unas cuantas horas en el mismo proceso de copiado.