【发布时间】:2020-03-22 19:43:55
【问题描述】:
请有人帮助我完成我们正在进行的项目。 我们使用 HMI 将数据记录到直接连接到 HMI 的 USB 驱动器。我们的客户需要通过 FTP 访问这些文件。 HMI 有一个可以访问的 FTP 区域,但是没有直接的方法可以在不同位置之间复制这些文件夹。 我可以在后台运行一些VB脚本并从PLC触发子程序。
我对 VB 脚本一无所知,我正在努力让它工作。
此代码仅在包含日期时才有效:IO.DirectoryInfo("\UsbDisk\Data Logging\Log Files\DataSet0\yyyymmdd")。
每晚午夜都会创建一个新文件夹并指定一个新日期,因此固定日期仅适用于当天。理想情况下,我希望副本从“UsbDisk\Data Logging\Log Files”复制所有内容,忽略“DataSet0\yyyymmdd”。
提前致谢。
Sub Test
Dim di As New IO.DirectoryInfo("\UsbDisk\Data Logging\Log Files\DataSet0\20191126")
Dim Diar1 As IO.FileInfo() = di.GetFiles()
Dim dra As IO.FileInfo
For Each dra In Diar1
System.IO.File.Copy(dra.FullName, "\User\SysmacHMI\FTP\" + dra.Name,True)
Next
End Sub
【问题讨论】:
-
只是为了检查我的理解,您是否要将在“DataSet0”目录下找到的每个文件复制到“\User\SysmacHMI\FTP\”中?还是“DataSet0”中的“0”也可以改变?
-
我想你想要
Dim di As New IO.DirectoryInfo("\UsbDisk\Data Logging\Log Files")和Dim Diar1 As IO.FileInfo() = di.GetFiles("*.*", SearchOption.AllDirectories)。 -
感谢您的意见。我不确定这是否是由于在 HMI 上运行的脚本但 SearchOption.AllDirectories 没有编译。 Dim Diar1 As IO.FileInfo() = di.GetFiles("." SearchOption.AllDirectories)
-
您可以改用问题Recursive File Search in VB.NET 中的代码。顺便问一下,HMI 代表什么,它使用的是哪个版本的 .NET Framework?
-
HMI(人机界面) 我是一名控制工程师,只懂逻辑编程(梯形逻辑/结构化文本) VB 不是我必须使用的东西。直到现在:/我很欣赏你的链接,但对我来说没有任何意义。也不知道如何找出使用的 .NET Framework 版本。