Использование xcopy в VBScript
Это продолжение моих предыдущих вопросов ( Копировать обновление, создать VBScript и копию папки с файлами). Пока у меня есть следующий скрипт для копирования файлов с использованием xcopy:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set wshShell = WScript.CreateObject("WScript.Shell")
strUserName = wshShell.ExpandEnvironmentStrings("%USERNAME%")
' Discover Current Drive Path
curDrv = objFSO.GetParentFolderName(WScript.ScriptFullName) 'Drive Path
' USB Drive and folder Path
upath = curdrv & "\ACG"
' Source
avg8 = "c:\Docume~1\alluse~1\applic~1\avg8\update\download\*.*"
avg9 = "c:\Docume~1\alluse~1\applic~1\avg9\update\download\*.*"
If struserName = DARIO Then
'(1) GOTO Update
End If
If Not objFSO.FolderExists (upath) Then
objFSO.CreateFolder (upath)
End If
If objFSO.FolderExists (avg9) Then
'WshShell.Run "xcopy c:\Docume~1\alluse~1\applic~1\avg9\update\download\*.* usbdrive:\acg /D", , True
'(2) WshShell.Run "xcopy avg9 upath /D", , True
WshShell.Run "xcopy " & avg9 & " " & upath & " /D", , True
End If
If objFSO.FolderExists (avg8) Then
'WshShell.Run "xcopy c:\Docume~1\alluse~1\applic~1\avg8\update\download\*.* & usbdrive:\acg & /D", , True
'(3) WshShell.Run "xcopy avg8 upath /D", , True
WshShell.Run "xcopy " & avg8 & " " & upath & " /D", , True
End if
MsgBox "Definition Files Copied to your USB Drive @ " & upath, vbInformation, "Copy Success..."
WScript.Quit
' Update
If Not objFSO.FolderExists("C:\Updates") Then
objFSO.CreateFolder "C:\Updates"
End If
If objFSO.FolderExists (upath) then
Wshshell.Run "xcopy " & upath & " " & "C:\Updates /D", , True '(4)
MsgBox "Update Files Copied to C:\Updates" , vbInformation, "Copy Destination"
End IF
' Process
Message = "Click OK to Start Updating product." & vbCr & vbCr
Message = Message & "Click Cancel or (Esc) to Exit." &vbCr & vbCr
Message = Message & "Keep Selecting OK until you get" & vbCr
Message = Message & "the Message :-" & vbCr & vbCr
Message = Message & "''No New Update Files Available''" & vbCR & vbCR
X = MsgBox(Message, vbOKCancel, "AVG Update Module")
Select Case X
Case vbCancel
MsgBox (strUserName & " cancelled the process.") , vbCritical, "Operation Terminated."
Wscript.Quit
Case vbOK
If objFSO.FileExists("C:\Program Files\AVG\AVG89\avgupd.exe") Then
WshShell.Run "C:\Program Files\AVG\AVG9\avgupd.exe" /source=folder /path="C:\Updates"
End If
If objFSO.FileExists("C:\Program Files\AVG\AVG8\avgupd.exe") Then
WshShell.Run "C:\Program Files\AVG\AVG8\avgupd.exe" /source=folder /path="C:\Updates"
'(5) Loop to Process
End If
End Select
К сожалению, xcopy не имеет места. Может ли кто-нибудь объяснить мне, что не так со сценарием, и указать мне правильное направление, чтобы набрать очки (1) - (5)? Благодарю.
1 ответ
Решение
Вместо xcopy используйте FileSystemObject.CopyFile следующим образом.
If objFSO.FolderExists (avg9) Then
objFSO.CopyFile "c:\Docume~1\alluse~1\applic~1\avg9\update\download\*.*", "usbdrive:\acg", True
End If
также используйте If Else, а не GOTO
If struserName = "DARIO" Then
'Do whatever should be done if the user is DARIO
Else
'Do whatever should be done if the user is not DARIO
End If
Вы также можете использовать подпрограмму или функцию, подобную этой
if struserName = "DARIO" Then
DoDARIOStuff
else
DoOtherStuff
end if
Затем определите подпрограммы где-то еще в коде, как это
Sub DoDARIOStuff
'Do whatever should be done if the user is DARIO
End Sub
Sub DoOtherStuff
'Do whatever should be done if the user is not DARIO
End Sub