Español (spanish formal Internacional)

Fermu Website

Home
Cómo cerrar ficheros abiertos vía red PDF Imprimir E-mail
Usar puntuación: / 3
MaloBueno 
Escrito por Marc   
Miércoles, 31 de Agosto de 2005 10:44

Introducción al problema

No sé si os ha pasado que al intentar copiar un fichero a un servidor de ficheros, éste está abierto por "algo" y no lo puedes sobreescribir. Quizás la solución es esperar a que el proceso que lo está usando lo cierre o ir "manualmente" a Computer management->Open files y hacer un "Close file".

Este proceso es tedioso si has de cerrar muchos archivos de un directorio o si sencillamente lo has de automatizar. Por eso el script que os propongo... que es parametrizable y programable en su ejecución desde el Administrador de tareas.

Nota: Haciendo esto, cierras la conexión entre el equipo que lo tiene abierto y el servidor, por lo que puedes provocar la pérdida de datos. Las pruebas realizadas cerrando archivos abiertos de Office han resultado existosas ya que no se pierden datos.

Cosas a tener en cuenta

El problema de usar "net file" es que no puedes especificar el nombre del archivo a cerrar ni la carpeta donde se encuentra, ya que se trabaja con "ID" que identifican el fichero abierto. Pero todo tiene solución en esta vida, menos la muerte, así que usaremos el proveedor WinNT para localizar el nombre del fichero y luego buscar el ID asociado al mismo.

La ejecución de este script sólo está probada y validada en modo "local".

Solución propuesta

La solución propuesta se basa el la ejecución del comando "net file" con el parámetro /close, por lo que sólo es aplicable a máquinas NT.

Primero de todo hemos de consultar al sistema para saber qué archivos tiene abiertos. Esto lo hacemos con la primera instrucción del script.

Dentro del "FOR" preguntamos si de todos y cada uno de los ficheros abiertos, alguno de ellos tiene el texto a buscar especificado, como por ejemplo Saldos o si la carpeta que los contiene se llama Saldos.

En el caso de que se encuentre mediante el uso de InStr, guardamos ese valor en la variable "valido". En el "IF" miramos si la condición se cumple. Si lo hace, mediante Resource.Name obtenemos el ID del archivo que pasaremos a "net file" que cerrará el archivo en cuestión.

Y así, por cada uno de los archivos que coincida el texto que estamos buscando. Pero cuidado que si también coincide alguna parte del texto sin ser el que buscamos, lo cerrará. Esto pasaría si buscamos la palabra "culo" y se encuentra con "artículo"... Para evitarlo, intentar pasarle como parámetro el texto lo más completo posible.

Marc
MCP - MVP Windows - Shell / User

Nota: GetTheName realmente no sirve para nada en este script así que se podría eliminar.

Trackback(0)
Comentarios (2)Add Comment
ke nakosssssssssssss
escrito por los nashazzzzzzzzzzzz, September 20, 2008
fkjgidjskodi
enviar abuso
vote negativo
vote positivo
Votos: +0
...
escrito por peni, August 31, 2005
Esto me viene genial!!! Gracias Marc :-))
enviar abuso
vote negativo
vote positivo
Votos: +0

Escribir comentario
quote
bold
italicize
underline
strike
url
image
quote
quote
smile
wink
laugh
grin
angry
sad
shocked
cool
tongue
kiss
cry
más pequeño | más grande

busy
Actualizado ( Domingo, 18 de Septiembre de 2005 12:04 )
 
Web www.fermu.com

Autentifícate



Gente Online

Tenemos 197 invitados y 1 miembro conectado
Joomla Templates by JoomlaShack