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 permettre l'écrasement des données ?
Merci!
Quelque chose comme ça pourrait fonctionner. Le DOS attribut la commande ne comprendra pas $bureau , donc le deuxième exemple utilise convertirFilePath 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 d'instantanés en lecture seule. Je pense que cela fonctionnera également pour les tables .JMP.
Tout cela suppose que vos utilisateurs font partie de votre équipe et n'essaient pas de briser 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 disposez d'une autorisation d'écriture et ce n'est pas le cas. Si votre dossier partagé se trouve sur votre ordinateur, vous pouvez probablement définir les autorisations plus facilement que d'utiliser 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 cela est critique.
À ma connaissance, il n'y a pas d'option "simple", mais il existe des options, en 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 Run Command pour activer l’écriture de fichiers « en lecture seule ». Il existe plusieurs façons de procéder, mais l'une consisterait à supprimer l'indicateur de lecture seule juste avant de l'écraser, puis à l'activer après l'enregistrement. Si je me souviens bien, il existe également des indicateurs de type forcé, qui peuvent forcer l'écrasement des fichiers en lecture seule.