你好,
这可能是一个愚蠢的问题,但我似乎无法解决它。 我有一个窗口调度程序,每 12 小时运行一次 JMP 脚本,并将数据表保存在共享文件夹中。 但是,如果该表(由任何用户)打开(通常是这样),则无法在下一次自动运行中保存该文件。 是否有一个简单的选项可以以“只读”模式打开 JMP 文件并启用覆盖数据?
谢谢!
像这样的东西可能会起作用。 操作系统属性命令无法理解$桌面,所以第二个例子使用转换文件路径修复它。 如果路径中有空格,它还会添加引号。
// 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>
FileSnapper 加载项使用此功能使快照文件变为只读。 我认为它也适用于 .JMP 表。
所有这些都假设您的用户在您的团队中并且没有试图破坏此解决方案。 如果他们对文件有读/写访问权限,他们也可以更改属性。 那么你需要一个你有写权限而他们没有的服务器。 如果您的共享文件夹位于您的计算机上,您可能可以比使用 attrib 命令更轻松地设置权限。 这些权限不会保护您免受自身侵害 - 如果您在文件打开(非只读)的情况下运行 JMP 实例,则同一计算机/用户上的计划 JMP 实例将不具有独占访问权限。 如果很关键的话,你可以两者都做。
据我所知,没有“简单”的选项,但有一些选项,以下是一些:
- 将文件夹设置为对其他用户只读,并授予写入文件的人员写入权限
- 使用运行命令启用写入“只读”文件。 有多种方法可以做到这一点,但一种方法是在覆盖之前删除只读标志,然后在保存后启用它。 如果我没记错的话,还有强制类型标志,它可以强制覆盖只读文件。