我最近问了这个问题:Import synced OneDrive files,但没有给出明确的答案,尽管它让我更多地使用了shell()
命令。
我想做以下几点:
observe({
invalidateLater(60*1000, session)
shell("cd C:/Users/xxx/AppData/Local/Microsoft/OneDrive && onedrive.exe /reset")
shell("cd C:/Users/xxx/AppData/Local/Microsoft/OneDrive && onedrive.exe")
list <- list.files(path = "../../folder/folder", pattern = ".xlsx", recursive = T)
...
})
这背后的想法是强制关闭OneDrive并重新启动它,以强制进行新的同步,而不需要物理打开文件。
使用第一个shell命令,OneDrive会很快关闭。然而,在第二个命令中,我的R被卡住了。它将向我展示以下信息:
[OneAuth:Error:9zj9x:00000000-0000-0000-0000-000000000000] OneAuth is not configured
[OneAuth:Error:9zj9x:00000000-0000-0000-0000-000000000000] OneAuth is not configured
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [0]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [0]
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [1]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [1]
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [2]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [2]
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [3]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [3]
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [4]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [4]
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [5]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [5]
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [6]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [6]
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [7]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [7]
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [8]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [8]
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [9]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [9]
[OneAuth:Info:9zkae:xxx] Start task AcquireCredentialSilently [10]
[OneAuth:Info:9zkad:xxx] Finish task AcquireCredentialSilently [10]
我可以看到文件在OneDrive中是同步的,但是即使所有文件都是同步的,R进程也没有停止。当我试图关闭该过程时,它会告诉我:
子进程没有响应。R会终止它
有什么解决办法吗?我也想知道是什么原因造成了这个问题。
发布于 2022-05-20 10:20:48
将wait = F
放在shell
函数中,似乎得到了这样的回答:
shell("cd C:/Users/xxx/AppData/Local/Microsoft/OneDrive && onedrive.exe", wait = F)
这样,启动OneDrive将是一个后台进程,而不是启动子进程。如果您想确保其余的代码只有在OneDrive完全重新生成之后才能运行,那么您可以使用Sys.sleep()
。此外,请确保您的invalidateLater
计时器足够大,以便在同步期间不重置OneDrive。
https://stackoverflow.com/questions/72307068
复制相似问题