我在处理Holter ECG(医疗)文件时遇到问题。这些是二进制数据文件,大小约为20 MB,从结构化头文件开始,而不是数据。我想要实现的最好是使用vbs脚本:
1)检查当前文件夹中的所有文件,并将处理过的文件移动到存档文件夹中 - 基于标题中的特定字符串: 在一个常量字符串“User Field#20”之后出现一个250-400个字符长的文本字符串,其中包含一个子字符串,如“Wn:”或“WN:”或“wn:”(带冒号)。如果在那里文件被处理并进入存档。 这两个例子的结论字符串如下:
i)个
Analize przeprowadzono w warunkach szpitalnych。 Rytm prowadzacy zatokowy z HR sr 70 / min(zakres 45-133 / min)。 Zarejestrowano 1 SVPB,bez epizodow czestoskurczu。 Komorowychzaburzeńrytmuserca nie ma。 PQ i QTc w normie。 WN:zapisprawidłowybezzaburezńrytmuserca
ⅱ)
Zapis w warunkach szpitalnych。 Rytm zatokowy,HR w zakresie 38 / min做到126 / min,średnio66/ min; przeciętniewdzień58-95/ min,wnocy 52-65 / min。 Nie zarejestrowano SVPB,VPB,pauz> 2,5sek.PQ w normie wiekowej。 QTcprawidłowe。 Dobowy profil rytmu w normie。 Wn:Zapis holterowski bez cech istotnej patologii
字符串中可能包含换行符,特殊字符和区域字符。我无法确定,但似乎结论字符串以十六进制80(欧元符号)结束。
2)如果可能 - 将日志添加到脚本 - 纯文本,分号分隔(如果需要,可以上传到excel)。 archive_log.txt:时间戳;姓;名字; DateRecorded; DateProcessed;结论LongText(约250-400个字符)。 DateRecorded和DateProcessed基于创建和上次修改的文件日期。
这是前段时间解决的问题的扩展。问题不同,只有要处理的文件是相同的。 Use the contents of a file to rename it
答案 0 :(得分:0)
您可以使用Ansgar在您引用的链接中使用的相同策略。阅读文件内容,然后您可以使用InStr()
搜索字符串:
' Read the entire file into a string...
strContents = objFS.OpenTextFile("file.dat").ReadAll()
' Search for the string "WN:" (case-insensitive)...
intPos = InStr(1, strContents, "WN:", vbTextCompare)
If intPos > 0 Then
' Found
End If
这应该在文件中找到第一个"WN:"
次出现。请注意,这可能是标题之外的其他一些事件,因此您还可以确定"User Field"
的位置,并将其与"WN:"
的位置进行比较。例如:
intPosUser = InStr(1, strContents, "User Field", vbTextCompare)
intPosWN = InStr(1, strContents, "WN:", vbTextCompare)
' "WN:" should be within 400 chars of the first User Field record...
If intPosWN > intPosUser And intPosWN - intPosUser < 400 Then
' Found
End If