VBScript No puedo borrar 2 ficheros intermedios SOLUCIONADO

Iniciado por tonilogar, 24 Octubre 2009, 17:33 PM

0 Miembros y 1 Visitante están viendo este tema.

tonilogar

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 (vb) [Seleccionar]
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws = CreateObject("WScript.Shell")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "SELECCIONEU EL DIRECTORI ORTOFOTO:", 0, 0)
If objFolder Is Nothing Then
MsgBox("L'aplicacio s'ha cancelat")
Wscript.Quit
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'CREAR UN ARCHIVO txt en donde se encuentran las ortofotos
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set var = fso.CreateTextFile(objFolder.self.path & "\variableobjFolder.self.path.txt", True)
var.writeline(objFolder.self.path)
var.close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'crear un txt para despues editarlo
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set ar = fso.CreateTextFile(objFolder.self.path & "\ortofotos-que-faltan.txt", True)
ar.writeline(objFolder.self.path)
ar.close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'leer la ruta donde se encuentran las ortofotos
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set ar = fso.OpenTextFile(objFolder.self.path & "\variableobjFolder.self.path.txt", 1)
linea=ar.Readline
pos=instrrev(linea,"\")
nlinea=left(linea,pos-1)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'crear u txt con todas las ortos del bloque a partir de los ficheros *ferfull
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set car = fso.GetFolder(nlinea)
Set listadoORTOFOTOS= fso.CreateTextFile(objFolder.self.path & "\llistat-ortofotos.txt", True)
For Each archivo in car.Files
If right(archivo.name,12)="_FerFull.bat" then
listadoORTOFOTOS.writeline (archivo.name)
End If
Next
listadoORTOFOTOS.close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'comparar el fichero llistat-ortofotos con las ortos que hay en el directorio ortofoto
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set var = fso.OpenTextFile(objFolder.self.path & "\llistat-ortofotos.txt", 1)
Do
linea=var.Readline
nombreArchivo=mid(linea,1,7)
FileExists=fso.FileExists (objFolder.self.path& "\" &nombreArchivo& "_S.rf")
if FileExists=FALSE Then
Set arc = fso.GetFile (objFolder.self.path & "\ortofotos-que-faltan.txt")
Set arc = arc.OpenAsTextStream(8)
arc.Writeline nombreArchivo & "_S.rf"
End if
loop until var.AtEndOfStream=True
arc.close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'abrir el fichero ortofotos-que-faltan.txt
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
msgbox ("Aquestes son les ortofotos que no es tronben al directori indicat")
ws.Run (objFolder.self.path & "\ortofotos-que-faltan.txt")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'borara los ficheros intermedios
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
fso.DeleteFile objFolder.self.path & "\llistat-ortofotos.txt", True
fso.DeleteFile objFolder.self.path & "\variableobjFolder.self.path.txt", True



Nota del mod: recuerda las etiquetas
No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.

Novlucker

#1
CitarDespues 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

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

tonilogar

#2
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 (vb) [Seleccionar]
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws = CreateObject("WScript.Shell")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "SELECCIONEU EL DIRECTORI ORTOFOTO:", 0, 0)
If objFolder Is Nothing Then
MsgBox("L'aplicacio s'ha cancelat")
Wscript.Quit
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'CREAR UN ARCHIU TXT PER DESPRES EDITARLO Y APUNTAR LES ORTOS QUE FALTEN PER GENERAR.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set ar = fso.CreateTextFile(objFolder.self.path & "\ortofotos-que-faltan.txt", True)
ar.writeline(objFolder.self.path)
ar.close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'CREAR UN ARCHIU TXT AMB TOTES LES ORTOFOTOS DEL BLOC A PARTIR DELS FITXERS FERFULL
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set car = fso.GetFolder(objfolder.parentfolder.self.path)
Set listadoORTOFOTOS= fso.CreateTextFile(objFolder.self.path & "\llistat-ortofotos.txt", True)
For Each archivo in car.Files
If right(archivo.name,12)="_FerFull.bat" then
listadoORTOFOTOS.writeline (archivo.name)
End If
Next
listadoORTOFOTOS.close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'COMPARAR EL FITXER llistat-ortofotos.txt AMB LES ORTOS QUE ES TROBEN AL DIRECTORI ORTOFOTO
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set var = fso.OpenTextFile(objFolder.self.path & "\llistat-ortofotos.txt", 1)
Do
linea=var.Readline
nombreArchivo=mid(linea,1,7)
FileExists=fso.FileExists (objFolder.self.path& "\" &nombreArchivo& "_S.rf")
if FileExists=FALSE Then
Set arc = fso.GetFile (objFolder.self.path & "\ortofotos-que-faltan.txt")
Set arc = arc.OpenAsTextStream(8)
arc.Writeline nombreArchivo & "_S.rf"
End if
loop until var.AtEndOfStream=True
arc.close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'OBRE EL FITXER ortofotos-que-faltan.txt
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
msgbox ("Aquestes son les ortofotos que no es tronben al directori indicat")
ws.Run (objFolder.self.path & "\ortofotos-que-faltan.txt")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'BORRA ELS FITXERS INTERMITJOS
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.

Novlucker

Se debe a que en el propio script tienes abierto el archivo ...

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

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

tonilogar

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
No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.

Novlucker

A todos nos tocó comenzar alguna vez no?  ;)

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein