根据工作日复制文件

时间:2014-10-22 05:31:38

标签: vbscript

我正在尝试运行将不同文件复制到同一目标文件夹的VBS脚本 基于工作日。 因此,如果今天是星期六(系统时间),文件1.text将被发送到目的地,但如果是星期日,则文件2.text将被发送到目的地。写下以后没有成功......

dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")

If Weekday(1,True))
FSO.CopyFile "C:\Users\sdu\Desktop\Source\1.txt", "C:\Users\sdu\Desktop\Destination\"  

if Weekday(2,True))
FSO.CopyFile "C:\Users\sdu\Desktop\Source\2.txt", "C:\Users\sdu\Desktop\Destination\"  

if Weekday(3,True))
FSO.CopyFile "C:\Users\sdu\Desktop\Source\3.txt", "C:\Users\sdu\Desktop\Destination\"  

Else
FSO.CopyFile "C:\Users\sdu\Desktop\Source\4.txt", "C:\Users\sdu\Desktop\Destination\"

2 个答案:

答案 0 :(得分:1)

我不清楚你要复制什么。您是否每天都有单独的文件(例如1.txt7.txt)?或者,您在前3天(1.txt2.txt3.txt)和另一个(4.txt)在本周的剩余时间内有单独的文件?

如果是后者,我会使用Select Case声明:

src = "C:\Users\sdu\Desktop\Source"
dst = "C:\Users\sdu\Desktop\Destination"

Set FSO = CreateObject("Scripting.FileSystemObject")

n = Weekday(Date, vbSaturday)
Select Case n
  Case 1, 2, 3 : FSO.CopyFile FSO.BuildPath(src, n & ".txt"), dst & "\"
  Case Else    : FSO.CopyFile FSO.BuildPath(src, "4.txt"), dst & "\"
End Select

If声明:

src = "C:\Users\sdu\Desktop\Source"
dst = "C:\Users\sdu\Desktop\Destination"

Set FSO = CreateObject("Scripting.FileSystemObject")

n = Weekday(Date, vbSaturday)
If n < 4 Then
  FSO.CopyFile FSO.BuildPath(src, n & ".txt"), dst & "\"
Else
  FSO.CopyFile FSO.BuildPath(src, "4.txt"), dst & "\"
End If

否则你可以这样做:

src = "C:\Users\sdu\Desktop\Source"
dst = "C:\Users\sdu\Desktop\Destination"

Set FSO = CreateObject("Scripting.FileSystemObject")

FSO.CopyFile FSO.BuildPath(src, Weekday(Date, vbSaturday) & ".txt"), dst & "\"

答案 1 :(得分:0)

使用字典将工作日(数字)s映射到文件名:

Option Explicit

Dim dicWD2File : Set dicWD2File = CreateObject("Scripting.Dictionary")
dicWD2File(1) = "2.txt"
dicWD2File(2) = "3.txt"
dicWD2File(3) = "4.txt"
dicWD2File(4) = "4.txt"
dicWD2File(5) = "4.txt"
dicWD2File(6) = "4.txt"
dicWD2File(7) = "1.txt"

Dim dtToday : dtToday = Date()
Dim nWD : nWD = Weekday(dtToday, vbSunday) ' nail down: Sunday => 1
WScript.Echo dtToday, nWD, WeekdayName(nWD)
If dicWD2File.Exists(nWD) Then
   WScript.Echo "=> copy:", Replace("C:\Users\sdu\Desktop\Source\@", "@", dicWD2File(nWD))
Else
   WScript.Echo "no such weekday:", nWD
End If

输出:

cscript 26500866.vbs
22.10.2014 4 Wednesday
=> copy: C:\Users\sdu\Desktop\Source\4.txt

(这样你只需要学习一次IF语句的正确语法!)

相关问题