2009-12-25 3 views
0

Это продолжение моих предыдущих вопросов (Copy Update Create VBScript и File Folder copy). До сих пор у меня есть следующий скрипт для копирования файлов с помощью XCOPY:Использование xcopy в VBScript

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 

К сожалению, хсор не происходит. Может ли кто-нибудь объяснить мне, что случилось с сценарием, и указать мне в правильном направлении, чтобы достичь очков (1) - (5)? Благодарю.

+0

Зачем использовать xcopy, а не методы копирования FileSystemObjects? – Tester101

ответ

0

Вместо 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 
Смежные вопросы