He escrito un pequeño VBScript para crear un archivo .zip y luego copia el contenido de una carpeta específica en ese archivo .zip.Escribir en un archivo usando CopyHere sin usar WScript.Sleep
Copio los archivos uno por uno por una razón (sé que puedo hacer todo el lote de una vez). Sin embargo, mi problema es cuando trato de copiarlos uno por uno sin WScript.Sleep entre cada iteración de bucle obtengo un "Archivo no encontrado o sin permiso de lectura". error; si coloco un WScript.Sleep 200
después de cada escritura, funciona pero no el 100% del tiempo.
Más o menos me gustaría deshacerse de la función del sueño y no confiar en que ya que dependiendo del tamaño del archivo puede tomar más tiempo para escribir, por tanto, 200 milisegundos pueden no ser lo suficientemente etc.
Como se puede veo con el pequeño trozo de código de abajo, yo bucle a través de los archivos, a continuación, si coinciden con la extensión de los coloco en el .zip (archivo zip)
For Each file In folderToZip.Items
For Each extension In fileExtensions
if (InStr(file, extension)) Then
zipFile.CopyHere(file)
WScript.Sleep 200
Exit For
End If
Next
Next
Cualquier sugerencia sobre cómo puedo dejar de depender de la función del sueño ?
Gracias
La otra forma en que pensé hacer esto fue haciendo una matriz y colocando todos los archivos que pasaron el filtro ... pero podría usar la matriz en la función CopyHere. ¿Alguien sabe cómo? – mlevit
No, no podría usar la matriz de ninguna otra manera que no sea iterarla y hacer básicamente lo mismo. ¿Qué hay de copiar los archivos pasados a una carpeta temporal y agregarlos todos a la vez desde allí? – Tomalak
@Tomalak No sé si eso hará la diferencia. Creo que podría obtener el mismo error que copiarlos en un archivo. ¿Cómo los agregarías todos de una vez? – mlevit