Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: tonilogar en 24 Octubre 2009, 17:33 pm



Título: VBScript No puedo borrar 2 ficheros intermedios SOLUCIONADO
Publicado por: tonilogar en 24 Octubre 2009, 17:33 pm
Pues este script me funciona correctamente, hasta que al final quiero borrar ficheros txt creados por el scrip y que al final no me sirven.
Pero me da un error y me dice que:
permission denied
800A0046
Porque no tengo permiso para borrarlo cuando los he creado los he cerrado.

Despues con el mismo codigo pero en un script diferente me los borra sin problemas.


Código
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Set ws = CreateObject("WScript.Shell")
  3. Set objShell = CreateObject("Shell.Application")
  4. Set objFolder = objShell.BrowseForFolder(0, "SELECCIONEU EL DIRECTORI ORTOFOTO:", 0, 0)
  5. If objFolder Is Nothing Then
  6. MsgBox("L'aplicacio s'ha cancelat")
  7. Wscript.Quit
  8. End If
  9. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  10. 'CREAR UN ARCHIVO txt en donde se encuentran las ortofotos
  11. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  12. Set var = fso.CreateTextFile(objFolder.self.path & "\variableobjFolder.self.path.txt", True)
  13. var.writeline(objFolder.self.path)
  14. var.close
  15. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  16. 'crear un txt para despues editarlo
  17. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  18. Set ar = fso.CreateTextFile(objFolder.self.path & "\ortofotos-que-faltan.txt", True)
  19. ar.writeline(objFolder.self.path)
  20. ar.close
  21. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  22. 'leer la ruta donde se encuentran las ortofotos
  23. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  24. Set ar = fso.OpenTextFile(objFolder.self.path & "\variableobjFolder.self.path.txt", 1)
  25. linea=ar.Readline
  26. pos=instrrev(linea,"\")
  27. nlinea=left(linea,pos-1)
  28. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  29. 'crear u txt con todas las ortos del bloque a partir de los ficheros *ferfull
  30. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  31. Set car = fso.GetFolder(nlinea)
  32. Set listadoORTOFOTOS= fso.CreateTextFile(objFolder.self.path & "\llistat-ortofotos.txt", True)
  33. For Each archivo in car.Files
  34. If right(archivo.name,12)="_FerFull.bat" then
  35. listadoORTOFOTOS.writeline (archivo.name)
  36. End If
  37. Next
  38. listadoORTOFOTOS.close
  39. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  40. 'comparar el fichero llistat-ortofotos con las ortos que hay en el directorio ortofoto
  41. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  42. Set var = fso.OpenTextFile(objFolder.self.path & "\llistat-ortofotos.txt", 1)
  43. Do
  44. linea=var.Readline
  45. nombreArchivo=mid(linea,1,7)
  46. FileExists=fso.FileExists (objFolder.self.path& "\" &nombreArchivo& "_S.rf")
  47. if FileExists=FALSE Then
  48. Set arc = fso.GetFile (objFolder.self.path & "\ortofotos-que-faltan.txt")
  49. Set arc = arc.OpenAsTextStream(8)
  50. arc.Writeline nombreArchivo & "_S.rf"
  51. End if
  52. loop until var.AtEndOfStream=True
  53. arc.close
  54. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  55. 'abrir el fichero ortofotos-que-faltan.txt
  56. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  57. msgbox ("Aquestes son les ortofotos que no es tronben al directori indicat")
  58. ws.Run (objFolder.self.path & "\ortofotos-que-faltan.txt")
  59. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  60. 'borara los ficheros intermedios
  61. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  62. fso.DeleteFile objFolder.self.path & "\llistat-ortofotos.txt", True
  63. fso.DeleteFile objFolder.self.path & "\variableobjFolder.self.path.txt", True


Nota del mod: recuerda las etiquetas


Título: Re: No puedo borrar 2 ficheros intermedios
Publicado por: Novlucker en 24 Octubre 2009, 21:30 pm
Citar
Despues con el mismo codigo pero en un script diferente me los borra sin problemas.
Con este script te funciona o no? quizás es porque el archivo no se cierra a su debido tiempo, y cuando intentas borrarlo da problemas.
Igualmente con el true que le has puesto al delete (para forzarlo) debería de ser suficiente.

Que es lo que intentas hacer exactamente?

Como digo, este es el script que funciona o el otro?

Saludos



Título: Re: VBScript No puedo borrar 2 ficheros intermedios
Publicado por: tonilogar en 24 Octubre 2009, 21:53 pm
El script lo he modificado con tu ayuda (objfolder.parentfolder.self.path)
Y perdona... parece una cosa muy trivial pero no he logrado encontrar la razón por internet.


Código
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Set ws = CreateObject("WScript.Shell")
  3. Set objShell = CreateObject("Shell.Application")
  4. Set objFolder = objShell.BrowseForFolder(0, "SELECCIONEU EL DIRECTORI ORTOFOTO:", 0, 0)
  5. If objFolder Is Nothing Then
  6. MsgBox("L'aplicacio s'ha cancelat")
  7. Wscript.Quit
  8. End If
  9. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  10. 'CREAR UN ARCHIU TXT PER DESPRES EDITARLO Y APUNTAR LES ORTOS QUE FALTEN PER GENERAR.
  11. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  12. Set ar = fso.CreateTextFile(objFolder.self.path & "\ortofotos-que-faltan.txt", True)
  13. ar.writeline(objFolder.self.path)
  14. ar.close
  15. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  16. 'CREAR UN ARCHIU TXT AMB TOTES LES ORTOFOTOS DEL BLOC A PARTIR DELS FITXERS FERFULL
  17. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  18. Set car = fso.GetFolder(objfolder.parentfolder.self.path)
  19. Set listadoORTOFOTOS= fso.CreateTextFile(objFolder.self.path & "\llistat-ortofotos.txt", True)
  20. For Each archivo in car.Files
  21. If right(archivo.name,12)="_FerFull.bat" then
  22. listadoORTOFOTOS.writeline (archivo.name)
  23. End If
  24. Next
  25. listadoORTOFOTOS.close
  26. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  27. 'COMPARAR EL FITXER llistat-ortofotos.txt AMB LES ORTOS QUE ES TROBEN AL DIRECTORI ORTOFOTO
  28. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  29. Set var = fso.OpenTextFile(objFolder.self.path & "\llistat-ortofotos.txt", 1)
  30. Do
  31. linea=var.Readline
  32. nombreArchivo=mid(linea,1,7)
  33. FileExists=fso.FileExists (objFolder.self.path& "\" &nombreArchivo& "_S.rf")
  34. if FileExists=FALSE Then
  35. Set arc = fso.GetFile (objFolder.self.path & "\ortofotos-que-faltan.txt")
  36. Set arc = arc.OpenAsTextStream(8)
  37. arc.Writeline nombreArchivo & "_S.rf"
  38. End if
  39. loop until var.AtEndOfStream=True
  40. arc.close
  41. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  42. 'OBRE EL FITXER ortofotos-que-faltan.txt
  43. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  44. msgbox ("Aquestes son les ortofotos que no es tronben al directori indicat")
  45. ws.Run (objFolder.self.path & "\ortofotos-que-faltan.txt")
  46. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  47. 'BORRA ELS FITXERS INTERMITJOS
  48. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  49. fso.DeleteFile objFolder.self.path & "\llistat-ortofotos.txt", True


El script me funciona correctamente.
Pero cuando llega al final y tiene que borrar un ficheros txt peta:
 
permission denied
800A0046

cuando me refería a esto:
Después con el mismo código pero en un script diferente me los borra sin problemas.
Quería decir que con este script me lo borra.


Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile objFolder.self.path & "\llistat-ortofotos.txt", True

Nota del mod: recuerda las etiquetas


Título: Re: VBScript No puedo borrar 2 ficheros intermedios
Publicado por: Novlucker en 24 Octubre 2009, 22:04 pm
Se debe a que en el propio script tienes abierto el archivo ...

En esta línea ...
Código
  1. Set var = fso.OpenTextFile(objFolder.self.path & "\llistat-ortofotos.txt", 1)
... la línea 29, cuando lo cierras?  :rolleyes:

Saludos


Título: Re: VBScript No puedo borrar 2 ficheros intermedios
Publicado por: tonilogar en 24 Octubre 2009, 22:10 pm
Gracias Novlucker.
Perdona que moleste con estos pequeños errores.
Es que soy novatillo y voy a trompicones.

Y lo dicho si no fuera por ti no acabaría ni un script.

Un saludo


Título: Re: VBScript No puedo borrar 2 ficheros intermedios
Publicado por: Novlucker en 24 Octubre 2009, 22:12 pm
A todos nos tocó comenzar alguna vez no?  ;)

Saludos