查找并复制最新文件

时间:2016-03-16 19:39:20

标签: vb.net vbscript xcopy

我们的程序将PDF保存到网络文件夹。然后我将把PDF复制到Web服务器。当用户多次保存/存档同一报告时会出现问题。

示例:

  • DAGH4(002).PDF - Date Modified = 3/16/2016 10:10 AM
  • DAGH4(001).PDF - 修改日期= 3/16/2016 9:00 AM
  • DAGH4.PDF - 修改日期= 2016年3月16日上午8:00
  • DANYL(001).PDF - 修改日期= 2016年3月16日上午10:50
  • DANYL.PDF - 修改日期= 2016年3月16日上午9:50

有没有办法可以复制最新版本?我只想要复制DAGH4(002)。PDF和DANYL(001).PDF。或者有没有办法重命名并保存最新版本?

另一个想法

使用此代码,我检查文件是否存在,并允许用户单击缩略图以打开关联的PDF。

Dim pdf_path = Server.MapPath(String.Format("../Reports/{0}.pdf",     
SerialNumber))
lblSerial.Visible = System.IO.File.Exists(pdf_path)
HyperLinkSerial.Visible = System.IO.File.Exists(pdf_path)
HyperLinkSerial.Text = "Inspection"
HyperLinkSerial.NavigateUrl = "../Reports/" & SerialNumber & ".PDF"

但是,我只需找到并显示DAGH4(002).PDF,修改日期为2016年3月16日上午10:10

使用VB .NET可以吗?

1 个答案:

答案 0 :(得分:0)

要查找每个文件的最新副本,您可以使用LINQ按序列号分组,按修改日期排序,并选择每个组的第一个项目。请注意,这假设您的“SerialNumber”只是字母和数字(正则表达式匹配):

Dim latest As IEnumerable(Of String) =
    From f In New DirectoryInfo(Server.MapPath("../Reports")).EnumerateFiles("*.PDF")
    Let serialNumber = Regex.Match(f.Name, "^\w+").Value
    Order By serialNumber Ascending, f.LastWriteTime Descending
    Group By serialNumber Into Group
    Select Group.First().f.FullName

latest将拥有每个序列号的最新(基于修改日期)文件的完整路径/名称。