我正在使用Autohotkey自动化流程,其中将 old.xlsx 重命名为 document_archived_on_%Timestring ,然后重命名 current.xlsx 到 old.xlsx ,然后将 newest_document.xlsx 重命名为 current.xlsx 。
那部分很简单而且很好用。
我想向 newest_document.xlsx 添加一个元数据注释,该注释为“ data_as_of_%Timestring%”。稍后,我想将 old.xlsx 重命名为“ document_%metadata%.xlsx。
以下简单有效的脚本:
; Take newest report, rename it to current. Take Current Report and move it to Old
; Take oldest report and archive it.
; Archive old report
FormatTime, Timestring, , yyyyMMdd
FileMove, G:\TPO_Project_DB\Old Data\old.xlsx, G:\TPO_Project_DB\Old Data\Eng_const_rpt_data_as_of_%Timestring%.xlsx
; Rename and move "current.xlsx" to "old.xlsx"
FileMove, G:\TPO_Project_DB\Current Data\current.xlsx, G:\TPO_Project_DB\Old Data\old.xlsx
; Rename and move newest report to current
FileMove, C:\TPOReports\Combined_eng_const_*, G:\TPO_Project_DB\Current Data\current.xlsx
答案 0 :(得分:1)
我能够找到很多有关读取meta属性的信息,但是关于写入这些信息……嗯,我没有发现太多信息。我没有找到完整的解决方案,也就是工作代码示例,但是可能至少有两种方法可以做到这一点。
首先,这里是一些阅读meta属性的参考链接。如果链接消失,搜索“ FGP-FileGetProperties”应该会产生类似的结果。
写入Excel元属性的一种方法是使用COM。这可能不是首选,因为它将涉及打开文件,写入属性然后保存-这也可能很慢。例如,下面的代码(写入“ Comments”元属性)花费了4.2秒的时间执行-尽管创建Excel实例后仅需0.4秒的时间,所以您可能只想创建一次应用程序对象,直到更改完所有内容您需要的Excel文件。
f1::
sFilePath := A_Desktop . "\test.xls"
oExcel := ComObjCreate( "Excel.Application" )
oExcel.Workbooks.Open( sFilePath )
oExcel.ActiveWorkbook.BuiltinDocumentProperties( "Comments" ).Value := "Test text"
oExcel.ActiveWorkbook.Save
oExcel.Quit
Return
另一种方法涉及使用DSOFile.dll
,可在此处找到https://support.microsoft.com/en-us/help/224351/the-dsofile-dll-files-lets-you-edit-office-document-properties-when-yo
我对此一无所知,也不知道如何使用它,但是它是为操纵Office产品的属性而设计的,它可能比打开每个文件更快,如上面的代码片段所示。此外,它可能也不会更改“修改日期”值。