【发布时间】:2018-05-02 17:38:14
【问题描述】:
我有一个基本上 24/7 运行的进程。它将数据写入 CSV,但我希望能够定期读取该 CSV。问题是即使文件以只读模式打开,Export-Csv 似乎也会失败。
有问题的 CSV 文件已被标记为只读,因此我在脚本中对其进行的所有写入都使用强制开关。这工作正常,但第二次我在 excel 中打开文件(甚至在 Windows 资源管理器中查看它的属性)脚本开始出错。
我想要做的就是使用 export-csv 写入 CSV,同时还允许 excel 以只读模式打开该 csv。这是可能的还是我需要想出一些方法来创建文件的辅助副本以供查看?
【问题讨论】:
-
我不相信这是可能的,因为 MS 锁定了文件。如果您共享工作簿,它可能会起作用。但是,您不能不共享 csv。我会更倾向于 DB 解决方案,比如 SQLite
-
如何在excel中打开文件?手动?通过脚本?
-
我在属性中检查了只读,并且能够在它以只读模式打开时更新 csv,使用强制开关。
-
另一个想法,如果 CSV 不是经常打开的,你可以使用
System.IO.FileInfo来检查 CSV 是否打开。如果是这样,请等待它关闭后再继续。 -
我尚未验证,但如果应用程序可以对标记为只读的文件设置读写锁,我不会感到惊讶。文件系统只会阻止稍后保存的尝试。我猜想在 Excel 中打开文件,Wordpad ++ 会给你带来问题,而在记事本或 PowerShell 中打开它(使用 [System.IO.File] 和只读权限)会因为他们的代码方式而正常工作打开文件
标签: powershell csv export-to-csv