2014-10-22 3 views
0

Я пытаюсь запустить скрипт 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\" 

ответ

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 только один раз!)

1

Мне не совсем понятно, что вы хотите скопировать. У вас есть отдельные файлы за каждый день (т. Е. 1.txt через 7.txt)? Или у вас есть отдельные файлы за первые 3 дня (1.txt, 2.txt, 3.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 & "\" 
+0

+ 1 для хорошей идеи использовать vbSaturday для выравнивания дня недели и номеров файлов. –

+0

Спасибо за то, что Ансгар. Я изменил второй скрипт, и он работает так, как я ожидал. Мне нужно только файлы, которые нужно копировать в будние дни не в выходные дни. SRC = "C: \ Users \ SDU \ Desktop \ Source" ДСТ = "C: \ Users \ SDU \ Desktop \ Destination" Set FSO = CreateObject ("Scripting.FileSystemObject") п = Будни (Дата) Если n <6 Затем FSO.CopyFile FSO.BuildPath (src, n & ".txt"), dst & "\" End If – entrup

Смежные вопросы