Hola,
Esta puede ser una pregunta tonta, pero parece que no puedo resolverla. Tengo un programador de ventanas que ejecuta un script JMP cada 12 horas y guarda la tabla de datos en una carpeta compartida. Sin embargo, el archivo no se puede guardar en la próxima ejecución automática, si la tabla está abierta (por cualquier usuario), lo que suele ser. ¿Existe una opción simple para abrir el archivo JMP en modo de "solo lectura" y habilitar la sobrescritura de los datos?
¡Gracias!
Que yo sepa, no hay una opción "simple", pero hay opciones, a continuación hay algunas:
- Haga que la carpeta sea de solo lectura para otros usuarios y otorgue acceso de escritura a la persona que escribe el archivo
- Use Ejecutar comando para habilitar la escritura de archivos de "solo lectura". Hay varias formas de hacer esto, pero una sería eliminar el indicador de solo lectura justo antes de sobrescribir y luego habilitarlo después de guardar. Si mal no recuerdo, también hay indicadores de tipo de fuerza, que pueden forzar la sobrescritura de archivos de solo lectura.
Algo como esto podría funcionar. el dos atributo el comando no entenderá $escritorio , por lo que el segundo ejemplo utiliza convertirFilePath para arreglarlo También está agregando comillas en caso de que tenga espacios en sus rutas.
// make read only: attrib.exe +R <PATH>
txt = Run Program(executable("attrib.exe"), options({"+R","\!""||FILENAME||"\!""}), readfunction("text"));</PATH>
// make NOT read only: attrib.exe -R <PATH>
txt = Run Program(executable("attrib.exe"),options({"-R","\!""||convertfilepath( FILENAME ,windows)||"\!""}),readfunction("text"));</PATH>
El complemento FileSnapper usa esto para hacer que los archivos de instantánea sean de solo lectura. Creo que también funcionará para tablas .JMP.
Todo esto supone que sus usuarios están en su equipo y no intentan romper esta solución. Si tienen acceso r/w al archivo, también pueden cambiar el atributo. Entonces necesitaría un servidor donde tenga permiso de escritura y ellos no. Si su carpeta compartida está en su máquina, probablemente pueda configurar los permisos más fácilmente que usando el comando attrib. Los permisos no lo protegerán de usted mismo: si deja una instancia de JMP ejecutándose con el archivo abierto (no de solo lectura), la instancia programada de JMP en la misma máquina/usuario no tendrá acceso exclusivo. Puede hacer ambas cosas si es crítico.