背景
我问了这个问题:
how do I convert DAQ-derived mxd file format to csv?
答案是好的和相关的,但现在我有近千个文件需要处理。我能做的最后一件事是一次一个地手动处理它们。在他们的压缩形式中,他们是很多GB。每个文件似乎有~100k行。
这些文件没有顺序文件名,如" 1.mxd"," 2.mxd"等等。这意味着代码必须查看子目录,得到文件名,将其传递给转换器,然后从那里开始。
问题:
如何将其转换为可访问的格式?
思想:
我在考虑像autohotkey或autoit这样的Windows脚本工具。有什么理由不起作用吗?它可能需要几个小时才能正常运行,但它不会花费数周的点击次数点击。
我喜欢R,MatLab,JMP和Excel,所以任何说出任何类似的输出格式都可以工作的东西。 R很可能是这一群体中最不依赖于格式的。
答案 0 :(得分:0)
所以我使用了“Autohotkey”(又名AHK)和“R”。我本可以去AHK,但R只是让它更快。我把文件名传给了AHK。 AHK运行鼠标和键盘来操作MW100 Viewer以打开文件,导出并关闭它。这是为所需的每个文件完成的。
我打开查看器,在一台显示器上最大化它,在正确的目录中手动打开文件以便设置本地目录,然后转到R并告诉它读取文件名,并在时间间隔为25秒,与AHK计划有关。
它过夜了,我能够在早上访问CSV数据。
修改后的代码如下。如果它表示“xx”或“yy”,则应为GUI设置正确的x和y坐标。
没有暗示任何东西,这就是我为了完成这项工作而将我需要的东西融合在一起的方式。你可以注意到“Escape ::”,所以如果你需要杀死一些东西,只需点击Escape按钮即可。
;this means when I double-click it reloads, not pops up another instance
#SingleInstance force
; "^j::" means control-j and it starts the script
;^j::
Loop, %0%
{
;input parameter is %param%
myfile := %A_Index%
; make "Data Viewer" active
WinActivate, Data Viewer
;click to open a file
Click, left, xx, yy
;wait one second
; wait up to 3 seconds for "Data Viewer" to become active
WinWait, Open, , 3
;click area where we type name of file
click left, 117, 230
;send filename
Send %myfile% {Enter}
; wait until "Information" becomes active
WinWait, Information, , 1
;Click "no" on import related files
click left, xx, yy
; it imports, this waits while importing
Sleep, 2000
WinActivate, Data Viewer
;Click the menu "convert"
click left, xx, yy
;Wait half a second
Sleep, 500
;Click the "to ascii" item
click left, xx, yy
; make "Information" active
WinWait, ASCII Conversion Details, , 1
;click okay
click left, xx, yy
;wait 8 seconds
Sleep, 14000
;click file menu
click left, xx, yy
; wait half a second
Sleep, 100
;select close sub-item
click left, xx, yy
}
;Return
Escape::
ExitApp
Return