你好,
這可能是一個愚蠢的問題,但我似乎無法解決它。 我有一個窗口調度程序,它每 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 實例將不具有獨占訪問權限。 如果它很關鍵,你可以同時做這兩個。