2017-01-10 2 views
2

Я не уверен, почему InstallResult всегда возвращает 1 в моем VBScript. Я поместил эхо в свой пакетный файл, чтобы подтвердить, удаляю ли исходный файл перед копией, она возвращает 4, и что она ничего не возвращает, если она успешна. Любая помощь будет оценена по достоинству. Мои файлы должны делать следующее:Ошибка проверки проверки командного файла через VBScript

  1. Скопируйте сценарий из сетевой папки на локальный компьютер.
  2. Запустите пакетный файл для установки офиса (в настоящее время некоторый тестовый код для проверки ошибок). Командный файл должен запускаться и отправлять код ошибки при выходе или 0 в случае успеха.
  3. Вернитесь к VBScript для проверки ошибок и выполните еще одну очистку VBScript.

Вот мой код:

Run установить биту (VBScript)

Dim objshell, InstallResult 

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

FSO.CopyFile "\\altirisdata\AssetMgmt\Tools\WSM\DeleteOffice13Package.vbs", "C:\source\DeleteOffice13Package.vbs" 
'DeleteMS2013FilePath = objShell.run ("c:\source\DeleteOffice13Package.vbs", 0, True) 

WScript.Sleep 3000 

Set objShell = WScript.CreateObject("WScript.Shell") 
InstallResult = objShell.run ("cscript.exe C:\source\Microsoft_Office_2013_01\install.bat", 0, True) 

WScript.Echo InstallResult 

If InstallResult <> 0 Then WScript.Echo "Unable to install Microsoft Office 2013. Please manually check the install results" 

If InstallResult = 0 Then 
    DeleteDelScript = objShell.Run("cscript.exe c:\source\DeleteOffice13Package.vbs", 0, True) 
End If 

If DeleteDelScript = 0 Then 
    FSO.DeleteFile("C:\source\DeleteOffice13Package.vbs") 
End If 

Set FSO = nothing 

WScript.Quit 

install.bat

@echo off 

xcopy "C:\source\test again\test.txt" "C:\Temp\Temp1\TempTest" /y 

if %errorlevel% neq 0 (
    exit /b %errorlevel% 
) 

exit 

ответ

1

Вы получаете возвращаемое значение 1, потому что вы пытаетесь запустить пакет скрипт с переводчика VBScript:

InstallResult = objShell.run ("cscript.exe C:\sourc...l.bat", 0, True)

Удалить cscript.exe из командной строки, или заменить его %COMSPEC% /c:

InstallResult = objShell.run ("%COMSPEC% /c C:\sourc...l.bat", 0, True)

Как примечание стороны, вам не нужно условие в вашем пакетном скрипте. Простое возвращение уровня ошибок должно быть достаточным:

@echo off 
xcopy "C:\source\test again\test.txt" "C:\Temp\Temp1\TempTest" /y 
exit /b %errorlevel%