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