【问题标题】:Merge large amount of files including only part of filename合并大量文件,仅包括文件名的一部分
【发布时间】:2017-05-21 04:58:43
【问题描述】:

我在合并通过 machinemonitoring-software 生成的文件时遇到了一些问题。该软件会生成文件,显示特定机器在给定时间的状态,如下所示:

格式:Time;Machine;Status

23:40:52;KP66;ms:4
23:39:54;KP86;ms:4
23:49:24;KP86;ms:9999
23:38:17;Wasmachine1;ms:4
23:43:36;Wasmachine1;ms:9999
23:41:29;Meten1;ms:4

每 15 分钟,使用此数据生成一个新文件。每个文件的文件名显示日期+生成时间,像这样29-02-2016-23-50.sdat(扩展名为.sdat,可以用记事本打开)。

为了能够正确地将这些文件输入到可视化软件中并将其可视化,我需要为某台机器记录特定状态的日期和时间。日期包含在文件名中,时间包含在文件本身中。

我创建了两个单独的脚本,以便能够 1. 将所有文件合并到一个文本文件中 2. 删除 .sdat 扩展名,因此数据显示如下:

29-02-2016-05-20 5:05:37;KP85;ms:3
29-02-2016-05-20 5:05:39;KP85;ms:9999
29-02-2016-05-20 5:06:04;KP85;ms:3
29-02-2016-05-20 5:07:51;KP86;ms:4
29-02-2016-05-20 5:17:58;KP86;ms:9999
29-02-2016-05-20 5:19:13;KP86;ms:4

问题是,因为“-05-20”部分(日期之后)仍然存在,它不能被识别为日期,因此我无法在 vis.xml 中创建日期时间字段。软件。 “05-20”随每个文件而变化。我需要某种可以使我的数据看起来像这样的脚本:

    29-02-2016 5:05:37;KP85;ms:3
    29-02-2016 5:05:39;KP85;ms:9999
    29-02-2016 5:06:04;KP85;ms:3
    29-02-2016 5:07:51;KP86;ms:4

这些是我迄今为止使用的脚本。一个批处理文件,用于合并所有文件,包括每行开头的完整文件名:

  @echo off
    (for %%f in (*.sdat) do (
      for /f "tokens=1 delims=" %%a in (%%f) do @echo %%f %%a
    ))>Machinelogs.txt

还有一个 vbs 脚本来删除每一行的“.sdat”部分:

Const ForReading = 1
Const ForWriting = 2
Const FileIn = "Machinelogs.txt"
Const FileOut = "Machinelogs.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(FileIn, ForReading)

strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, ".sdat", "")

Set objFile = objFSO.OpenTextFile(FileOut, ForWriting)
objFile.WriteLine strNewText
objFile.Close

我使用了另一个批处理文件来顺序调用这两个脚本。

【问题讨论】:

    标签: windows file batch-file vbscript scripting


    【解决方案1】:

    如果我理解正确,那么简单的事情应该可以满足您的所有需求:

    @(For /F "Tokens=1-5* Delims=-:" %%A In ('FindStr/R "^" *.sdat'
    ) Do @Echo(%%A-%%B-%%C %%F)>Machinelogs.txt
    

    【讨论】:

    • 您理解正确,它有效。感谢并原谅我无法正确编写脚本:p。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 2012-01-18
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2013-11-17
    相关资源
    最近更新 更多