salut,
C'est peut-être une question idiote, mais je n'arrive pas à la résoudre. J'ai un planificateur de fenêtres qui exécute un script JMP toutes les 12 heures et enregistre la table de données dans un dossier partagé. Cependant, le fichier ne peut pas être enregistré lors de la prochaine exécution automatique, si la table est ouverte (par n'importe quel utilisateur), ce qui est généralement le cas. Existe-t-il une option simple pour ouvrir le fichier JMP en mode "lecture seule" et activer l'écrasement des données ?
Merci!
A ma connaissance il n'y a pas d'option "simple", mais il y a des options, voici quelques-unes :
- Rendre le dossier en lecture seule pour les autres utilisateurs et accorder l'accès en écriture à la personne qui écrit le fichier
- Utilisez Exécuter la commande pour activer l'écriture de fichiers "en lecture seule". Il existe plusieurs façons de procéder, mais l'une consiste à supprimer l'indicateur de lecture seule juste avant l'écrasement, puis à l'activer après l'enregistrement. Si je me souviens bien, il existe également des indicateurs de type de force, qui peuvent forcer l'écrasement des fichiers en lecture seule.
Quelque chose comme ça pourrait fonctionner. Le DOS attribut la commande ne comprendra pas $bureau , donc le deuxième exemple utilise convertFilePath pour le réparer. Il ajoute également des guillemets au cas où vous auriez des espaces dans vos chemins.
// 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>
Le complément FileSnapper l'utilise pour rendre les fichiers instantanés en lecture seule. Je pense que cela fonctionnera aussi pour les tables .JMP.
Tout cela suppose que vos utilisateurs font partie de votre équipe et n'essaient pas de casser cette solution. S'ils ont un accès r/w au fichier, ils peuvent également modifier l'attribut. Ensuite, vous auriez besoin d'un serveur sur lequel vous avez une autorisation d'écriture et pas eux. Si votre dossier partagé se trouve sur votre machine, vous pouvez probablement définir les autorisations plus facilement qu'en utilisant la commande attrib. Les autorisations ne vous protégeront pas de vous-même : si vous laissez une instance de JMP en cours d'exécution avec le fichier ouvert (pas en lecture seule), l'instance planifiée de JMP sur le même ordinateur/utilisateur n'aura pas d'accès exclusif. Vous pouvez faire les deux si c'est critique.