如何将大量DAQ派生的mxd文件格式转换为csv?

时间:2017-07-13 18:34:14

标签: parsing automation format

背景

我问了这个问题:
how do I convert DAQ-derived mxd file format to csv?

答案是好的和相关的,但现在我有近千个文件需要处理。我能做的最后一件事是一次一个地手动处理它们。在他们的压缩形式中,他们是很多GB。每个文件似乎有~100k行。

当我尝试加载它们时,它得到了这个:
enter image description here

这些文件没有顺序文件名,如" 1.mxd"," 2.mxd"等等。这意味着代码必须查看子目录,得到文件名,将其传递给转换器,然后从那里开始。

问题:
如何将其转换为可访问的格式?

思想:
我在考虑像autohotkey或autoit这样的Windows脚本工具。有什么理由不起作用吗?它可能需要几个小时才能正常运行,但它不会花费数周的点击次数点击。

我喜欢R,MatLab,JMP和Excel,所以任何说出任何类似的输出格式都可以工作的东西。 R很可能是这一群体中最不依赖于格式的。

1 个答案:

答案 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