Moverse por el bloqueo de archivos de Windows

1

Tengo un problema con un producto de terceros programable / programable que crea archivos que necesitamos publicar (mover, comprimir o lo que sea).

El producto nos permite ejecutar comandos una vez que ha terminado de crear su salida, por lo que todo es perfecto, ¿verdad?

No tanto, porque la aplicación todavía tiene los archivos "abiertos" cuando llama a nuestro script, por lo que Windows no me deja tocarlos ni el directorio en el que están.

La única idea que tengo hasta ahora es startmystuff.bat y comenzar mystuff.bat con un sueño, pero eso abre una lata de gusanos con respecto al manejo de errores y demás, porque el programa del servidor no puede saber cuándo el trabajo de procesamiento posterior ha terminado

¿Alguién sabe como solucionar este problema?


  • Los archivos se escriben en el disco local en el servidor de Windows (2008 R2).
  • Pedirle al proveedor de software que arregle su programa ha fallado hasta ahora :-(


El software es PrintNetT, un sistema de producción de impresión, se ejecuta como un servicio / demonio, procesando solicitudes de trabajo, creando directorios + archivos, manteniéndolos bloqueados durante la duración del lote que los crea. Se ejecuta 24/7 en un servidor (sin cabeza). Una vez que el lote ha terminado, los archivos ya no están bloqueados.

MattBianco
fuente
2
Probablemente podría escribir algo usando Handle from Sysinternals
Nifle
1
@Nifle, gracias por la hermosa edición de mi pregunta. Ahora es claro, conciso y al grano. Todavía preguntando exactamente lo que quería preguntar. ¡Gracias amigo! Voté su comentario a punto handlede decir gracias por la limpieza de la pregunta.
MattBianco

Respuestas:

1

¿Qué tipo de "producto" es este? Obviamente es un software, pero ¿es un ejecutable? ¿Tiene un proceso único (es decir, aparece en la pestaña de procesos del administrador de tareas)? Si lo hace, esa sería mi primera suposición sobre su mejor apuesta para "cerrarla".

Sin embargo, si no es así, ¿qué tipo de archivo es el que se está ejecutando? ¿Puede cerrar la sesión o reiniciar sin perder lo que necesitaba? Si es así, intente eso y vea si eso funciona. De lo contrario, deberá proporcionar un poco más de información.

usuario142710
fuente
Creo que también hay algo en pstools, en caso de que necesite hacer una secuencia de comandos de línea de comando para ello.
Journeyman Geek
0

Puede intentar copiar los archivos o archivarlos (zip) con programas que no requieren acceso completo de lectura / escritura / eliminación. Creo que la mayoría de los programas de Linux adaptados a Windows tienen esta propiedad. De esta forma, puede copiar los archivos antes de que se cierre la aplicación, procesar los datos y luego limpiar las sobras periódicamente.

Para ver si este método funciona, puede intentar abrir cualquier archivo que todavía esté "abierto" con un editor de texto decente, como Visual Studio, Notepad ++ o Vim.

Interarticulo
fuente
He intentado con GoW y me he encontrado con el mismo tipo de problemas de bloqueo. No creo que sea una aplicación la que decida si puede leer un archivo o no. Debe ser decidido por el O / S.
MattBianco
el enlace está borked - use markdown para el enlace, en lugar de html para que funcione correctamente
Journeyman Geek
@MattBianco: depende del primer programa que abrió un archivo si los programas posteriores pueden abrir el archivo o no. El sistema operativo determina el comportamiento predeterminado si no se han indicado preferencias. Desafortunadamente, Windows bloquea los archivos de manera predeterminada (aunque requiere mucho más esfuerzo hacerlo bajo Linux). Si no hay absolutamente ninguna manera de abrir el archivo mientras su aplicación se está ejecutando, espere a que la aplicación libere el archivo utilizando el identificador SysInternals, el sondeo de bloqueo de archivos de fuerza bruta ( stackoverflow.com/questions/1951791/… )
Interarticle
O cierre el identificador de archivo en la aplicación escribiendo un programa con desvíos que se inyecte en esta aplicación: research.microsoft.com/en-us/projects/detours
Interarticle