VBS查找包含日期的文件并将该日期更改为前一天

时间:2013-09-10 10:54:20

标签: date vbscript

这里有新的和非常新的VBS所以请轻松。

我有一组通过FTP发送到服务器上的文件夹的文件,这些文件的命名结构是:

waw_29_2013-09-09_act_v001.csv
waw_29_2013-09-09_amf_v001.csv
waw_29_2013-09-09_inc_v001.csv
waw_29_2013-09-09_nbs_v001.csv
waw_29_2013-09-09_trn_v001.csv
waw_29_2013-09-09_val_v001.csv
waw_29_2013-09-09_wth_v001.csv

我想要实现的是脚本扫描包含这些文件的文件夹,并将名称更改为前一天,但保留命名约定的结构。

我在c:\ drive的文件中试过这个(我很新,所以请原谅我缺乏理解)

**Dim file1, file2

file1 = "C:\fake_%date%.txt"

file2 = "C:\waw_" & year(date) & -month(date) & -Day(Date) & "_act_v001.csv"

Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists(file1) = true then
    If fso.FileExists(file2) = true then
        fso.DeleteFile(file2)
    End if
    fso.MoveFile file1, file2
'else
'    msgbox "File does not exist"
End If 

Set FSO = Nothing**

位于名为c:\fake_2013-09-09.txt的文件(作为测试)上,它正在尝试扫描该文件的c:\驱动器(无论日期如何),然后将此文件重命名为"waw_29_2013-09-09_act_v001.csv"

我还需要单独运行相同的脚本,但也要将周日的日期更改为 3 天。

非常感谢任何帮助。

小心

麦克

再次问好

我进一步了解:

我现在修改了脚本,如下所示:

Dim file1, file2

file1 = "C:\winter\waw_29_2013-09-10_act_v001.csv"
file2 = "C:\winter\waw_29_" & -Year(Date) & Right("0" & Month(Date),2) & Right

("0" & -Day(Date),2) & "_act_v001.csv" 

Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists(file1) = true then
    If fso.FileExists(file2) = true then
        fso.DeleteFile(file2)
    End if
    fso.MoveFile file1, file2
'else

'msgbox“文件不存在”    结束如果

Set FSO = Nothing

现在我有两个关于脚本的问题,因为我认为它是90%:

  • File1中的一行,如何才能搜索该文件但只搜索和_act字段?
  • 在File2下,我可以让系统现在为文件生成一个日期(错误的日期,但我到了那里),但格式是20130909而不是2013-09-09,因为我需要。如果我离开“& Right(”0“)”以创建前导“0”,如何在日期之间添加“ - ”,但是如果我把它拿出来,它将把“ - ”在但没有领先)!!!
  • 我的最后一个问题是我找到了DateAdd命令,它允许我搜索文件,然后将日期更改为上一个日期.....我的问题是我不知道将其放在代码中的哪个位置。

如果你能提供帮助,我会非常感激。

麦克

哇,非常感谢你,真的帮到了很多,并解决了我的问题的第二部分。 您知道如何在文件夹中搜索设置参数,以便搜索名为“waw_29_2013-09-09_act_v001.csv”的文件夹,但是从搜索中排除日期部分吗?

再次非常感谢你,我从剧本的那一部分学到了很多东西

麦克

1 个答案:

答案 0 :(得分:0)

要构建YYYY-MM-DD形式的日期字符串,您需要连接日期部分和交错连字符:

d = Date
Year(d) & "-" & Right("0" & Month(d), 2) & "-" & Right("0" & Day(d), 2)

如果要建立3天前的日期字符串,请执行相同操作,但首先从当前日期减去3天:

d = Date - 3
Year(d) & "-" & Right("0" & Month(d), 2) & "-" & Right("0" & Day(d), 2)