vbs计算机重启代码,Restart.vbs源代码可以重启远程电脑的vbs

这是一个用于远程关闭、重启或注销计算机的VBScript脚本。通过命令行参数可以指定目标服务器、操作类型(如重启、关闭等)、是否强制执行以及等待时间等选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

'********************************************************************

'*

'* File:           Restart.vbs

'* Created:        March 1999

'* Version:        1.0

'*

'*  Main Function:  Shutsdown, PowerOff, LogOff, Restarts a machine.

'*

'*  Restart.vbs    /S  [/U ] [/W ]

'*                 [/O ] [/L} [/P] [/R] [/Q] [/F] [/T ]

'*

'* Copyright (C) 1999 Microsoft Corporation

'*

'********************************************************************

OPTION EXPLICIT

'Define constants

CONST CONST_ERROR                   = 0

CONST CONST_WSCRIPT                 = 1

CONST CONST_CSCRIPT                 = 2

CONST CONST_SHOW_USAGE              = 3

CONST CONST_PROCEED                 = 4

'Shutdown Method Constants

CONST CONST_SHUTDOWN                = 1

CONST CONST_LOGOFF                  = 0

CONST CONST_POWEROFF                = 8

CONST CONST_REBOOT                  = 2

CONST CONST_FORCE_REBOOT            = 6

CONST CONST_FORCE_POWEROFF          = 12

CONST CONST_FORCE_LOGOFF            = 4

CONST CONST_FORCE_SHUTDOWN          = 5

'Declare variables

Dim intOpMode, i

Dim strServer, strUserName, strPassword, strOutputFile

Dim blnLogoff, blnPowerOff, blnReBoot, blnShutDown

Dim blnForce

Dim intTimer

Dim UserArray(3)

Dim MyCount

'Make sure the host is csript, if not then abort

VerifyHostIsCscript()

'Parse the command line

intOpMode = intParseCmdLine(strServer     ,  _

strUserName   ,  _

strPassword   ,  _

strOutputFile ,  _

blnLogoff     ,  _

blnPowerOff   ,  _

blnReBoot     ,  _

blnShutdown   ,  _

blnForce      ,  _

intTimer         )

Select Case intOpMode

Case CONST_SHOW_USAGE

Call ShowUsage()

Case CONST_PROCEED

Call Reboot(strServer     , _

strOutputFile , _

strUserName   , _

strPassword   , _

blnReboot     , _

blnForce      , _

intTimer        )

Call LogOff(strServer     , _

strOutputFile , _

strUserName   , _

strPassword   , _

blnLogoff     , _

blnForce      , _

intTimer        )

Call PowerOff(strServer     , _

strOutputFile , _

strUserName   , _

strPassword   , _

blnPowerOff   , _

blnForce      , _

intTimer        )

Call ShutDown(strServer     , _

strOutputFile , _

strUserName   , _

strPassword   , _

blnShutDown   , _

blnForce      , _

intTimer        )

Case CONST_ERROR

'Do Nothing

Case Else                    'Default -- should never happen

Call Wscript.Echo("Error occurred in passing parameters.")

End Select

'********************************************************************

'*

'* Sub Reboot()

'*

'* Purpose: Reboots a machine.

'*

'* Input:   strServer           a machine name

'*          strOutputFile       an output file name

'*          strUserName         the current user's name

'*          strPassword         the current user's password

'*          blnForce            specifies whether to force the logoff

'*          intTimer            specifies the amount of time to perform the function

'*

'* Output:  Results are either printed on screen or saved in strOutputFile.

'*

'********************************************************************

Private Sub Reboot(strServer, strOutputFile, strUserName, strPassword, blnReboot, blnForce, intTimer)

ON ERROR RESUME NEXT

Dim objFileSystem, objOutputFile, objService, objEnumerator, objInstance

Dim strQuery, strMessage

Dim intStatus

ReDim strID(0), strName(0)

if blnreboot = false then

Exit Sub

End if

if intTimer > 0 then

wscript.echo "Rebooting machine " & strServer & " in " & intTimer & " seconds..."

wscript.sleep (intTimer * 1000)

End if

'Open a text file for output if the file is requested

If Not IsEmpty(strOutputFile) Then

If (NOT blnOpenFile(strOutputFile, objOutputFile)) Then

Call Wscript.Echo ("Could not open an output file.")

Exit Sub

End If

End If

'Establish a connection with the server.

If blnConnect("root\cimv2" , _

strUserName , _

strPassword , _

strServer   , _

objService  ) Then

Call Wscript.Echo("")

Call Wscript.Echo("Please check the server name, " _

& "credentials and WBEM Core.")

Exit Sub

End If

strID(0) = ""

strName(0) = ""

strMessage = ""

strQuery = "Select * From Win32_OperatingSystem"

Set objEnumerator = objService.ExecQuery(strQuery,,0)

If Err.Number Then

Print "Error 0x" & CStr(Hex(Err.Number)) & " occurred during the query."

If Err.Description <> "" Then

Print "Error description: " & Err.Description & "."

End If

Err.Clear

Exit Sub

End If

i = 0

For Each objInstance in objEnumerator

If blnForce Then

intStatus = objInstance.Win32ShutDown(CONST_FORCE_REBOOT)

Else

intStatus = objInstance.Win32ShutDown(CONST_REBOOT)

End If

IF intStatus = 0 Then

strMessage = "Reboot a machine " & strServer & "."

Else

strMessage = "Failed to reboot a machine " & strServer & "."

End If

Call WriteLine(strMessage,objOutputFile)

Next

If IsObject(objOutputFile) Then

objOutputFile.Close

Call Wscript.Echo ("Results are saved in file " & strOutputFile & ".")

End If

End Sub

'********************************************************************

'*

'* Sub LogOff()

'*

'* Purpose: Logs off the user currently logged onto a machine.

'*

'* Input:   strServer           a machine name

'*          strOutputFile       an output file name

'*          strUserName         the current user's name

'*          strPassword         the current user's password

'*          blnForce            specifies whether to force the logoff

'*          intTimer            specifies the amount of time to preform the function

'*

'* Output:  Results are either printed on screen or saved in strOutputFile.

'*

'********************************************************************

Private Sub LogOff(strServer, strOutputFile, strUserName, strPassword, blnLogoff, blnForce, intTimer)

ON ERROR RESUME NEXT

Dim objFileSystem, objOutputFile, objService, objEnumerator, objInstance

Dim strQuery, strMessage

Dim intStatus

ReDim strID(0), strName(0)

If blnlogoff = false then

Exit Sub

End if

if intTimer > 1 then

wscript.echo "Logging off machine " & strServer & " in " & intTimer & " seconds..."

wscript.sleep (intTimer * 1000)

End if

'Open a text file for output if the file is requested

If Not IsEmpty(strOutputFile) Then

If (NOT blnOpenFile(strOutputFile, objOutputFile)) Then

Call Wscript.Echo ("Could not open an output file.")

Exit Sub

End If

End If

'Establish a connection with the server.

If blnConnect("root\cimv2" , _

strUserName , _

strPassword , _

strServer   , _

objService  ) Then

Call Wscript.Echo("")

Call Wscript.Echo("Please check the server name, " _

& "credentials and WBEM Core.")

Exit Sub

End If

strID(0) = ""

strName(0) = ""

strMessage = ""

strQuery = "Select * From Win32_OperatingSystem"

Set objEnumerator = objService.ExecQuery(strQuery,,0)

If Err.Number Then

Print "Error 0x" & CStr(Hex(Err.Number)) & " occurred during the query."

If Err.Description <> "" Then

Print "Error description: " & Err.Description & "."

End If

Err.Clear

Exit Sub

End If

i = 0

For Each objInstance in objEnumerator

If blnForce Then

intStatus = objInstance.Win32ShutDown(CONST_FORCE_LOGOFF)

Else

intStatus = objInstance.Win32ShutDown(CONST_LOGOFF)

End If

IF intStatus = 0 Then

strMessage = "Logging off the current user on machine " & _

strServer & "..."

Else

strMessage = "Failed to log off the current user from machine " _

& strServer & "."

End If

Call WriteLine(strMessage,objOutputFile)

Next

If IsObject(objOutputFile) Then

objOutputFile.Close

Call Wscript.Echo ("Results are saved in file " & strOutputFile & ".")

End If

End Sub

'********************************************************************

'*

'* Sub PowerOff()

'*

'* Purpose: Powers off a machine.

'*

'* Input:   strServer           a machine name

'*          strOutputFile       an output file name

'*          strUserName         the current user's name

'*          strPassword         the current user's password

'*          blnForce            specifies whether to force the logoff

'*          intTimer            specifies the amount of time to perform the function

'*

'* Output:  Results are either printed on screen or saved in strOutputFile.

'*

'********************************************************************

Private Sub PowerOff(strServer, strOutputFile, strUserName, strPassword, blnPowerOff, blnForce, intTimer)

ON ERROR RESUME NEXT

Dim objFileSystem, objOutputFile, objService, objEnumerator, objInstance

Dim strQuery, strMessage

Dim intStatus

ReDim strID(0), strName(0)

if blnPoweroff = false then

Exit sub

End if

If intTimer > 0 then

wscript.echo "Powering off machine " & strServer & " in " & intTimer & " seconds..."

wscript.sleep (intTimer * 1000)

End if

'Open a text file for output if the file is requested

If Not IsEmpty(strOutputFile) Then

If (NOT blnOpenFile(strOutputFile, objOutputFile)) Then

Call Wscript.Echo ("Could not open an output file.")

Exit Sub

End If

End If

'Establish a connection with the server.

If blnConnect("root\cimv2" , _

strUserName , _

strPassword , _

strServer   , _

objService  ) Then

Call Wscript.Echo("")

Call Wscript.Echo("Please check the server name, " _

& "credentials and WBEM Core.")

Exit Sub

End If

strID(0) = ""

strName(0) = ""

strMessage = ""

strQuery = "Select * From Win32_OperatingSystem"

Set objEnumerator = objService.ExecQuery(strQuery,,0)

If Err.Number Then

Print "Error 0x" & CStr(Hex(Err.Number)) & " occurred during the query."

If Err.Description <> "" Then

Print "Error description: " & Err.Description & "."

End If

Err.Clear

Exit Sub

End If

i = 0

For Each objInstance in objEnumerator

If blnForce Then

intStatus = objInstance.Win32ShutDown(CONST_FORCE_POWEROFF)

Else

intStatus = objInstance.Win32ShutDown(CONST_POWEROFF)

End If

IF intStatus = 0 Then

strMessage = "Power off machine " & strServer & "."

Else

strMessage = "Failed to power off machine " & strServer & "."

End If

Call WriteLine(strMessage,objOutputFile)

Next

If IsObject(objOutputFile) Then

objOutputFile.Close

Call Wscript.Echo ("Results are saved in file " & strOutputFile & ".")

End If

End Sub

'********************************************************************

'*

'* Sub Shutdown()

'*

'* Purpose: Shutsdown a machine.

'*

'* Input:   strServer           a machine name

'*          strOutputFile       an output file name

'*          strUserName         the current user's name

'*          strPassword         the current user's password

'*          blnForce            specifies whether to force the logoff

'*          intTimer            specifies the amount of time to perform the function

'*

'* Output:  Results are either printed on screen or saved in strOutputFile.

'*

'********************************************************************

Private Sub Shutdown(strServer, strOutputFile, strUserName, strPassword, blnShutDown, blnForce, intTimer)

ON ERROR RESUME NEXT

Dim objFileSystem, objOutputFile, objService, objEnumerator, objInstance

Dim strQuery, strMessage

Dim intStatus

ReDim strID(0), strName(0)

If blnShutdown = False then

Exit Sub

End if

if intTimer > 0 then

wscript.echo "Shutting down computer " & strServer & " in " & intTimer & " seconds..."

wscript.sleep (intTimer * 1000)

End if

'Open a text file for output if the file is requested

If Not IsEmpty(strOutputFile) Then

If (NOT blnOpenFile(strOutputFile, objOutputFile)) Then

Call Wscript.Echo ("Could not open an output file.")

Exit Sub

End If

End If

'Establish a connection with the server.

If blnConnect("root\cimv2" , _

strUserName , _

strPassword , _

strServer   , _

objService  ) Then

Call Wscript.Echo("")

Call Wscript.Echo("Please check the server name, " _

& "credentials and WBEM Core.")

Exit Sub

End If

strID(0) = ""

strName(0) = ""

strMessage = ""

strQuery = "Select * From Win32_OperatingSystem"

Set objEnumerator = objService.ExecQuery(strQuery,,0)

If Err.Number Then

Print "Error 0x" & CStr(Hex(Err.Number)) & " occurred during the query."

If Err.Description <> "" Then

Print "Error description: " & Err.Description & "."

End If

Err.Clear

Exit Sub

End If

i = 0

For Each objInstance in objEnumerator

If blnForce Then

intStatus = objInstance.Win32ShutDown(CONST_FORCE_SHUTDOWN)

Else

intStatus = objInstance.Win32ShutDown(CONST_SHUTDOWN)

End If

IF intStatus = 0 Then

strMessage = "Shuts down machine " & strServer & "."

Else

strMessage = "Failed to shutdown machine " & strServer & "."

End If

Call WriteLine(strMessage,objOutputFile)

Next

If IsObject(objOutputFile) Then

objOutputFile.Close

Call Wscript.Echo ("Results are saved in file " & strOutputFile & ".")

End If

End Sub

'********************************************************************

'*

'* Function intParseCmdLine()

'*

'* Purpose: Parses the command line.

'* Input:

'*

'* Output:  strServer         a remote server ("" = local server")

'*          strUserName       the current user's name

'*          strPassword       the current user's password

'*          strOutputFile     an output file name

'*          intTimer          amount of time in seconds

'*

'********************************************************************

Private Function intParseCmdLine( ByRef strServer,        _

ByRef strUserName,      _

ByRef strPassword,      _

ByRef strOutputFile,    _

ByRef blnLogoff,        _

ByRef blnShutdown,      _

ByRef blnReboot,        _

ByRef blnPowerOff,      _

ByRef blnForce,         _

ByRef intTimer          )

ON ERROR RESUME NEXT

Dim strFlag

Dim intState, intArgIter

Dim objFileSystem

If Wscript.Arguments.Count > 0 Then

strFlag = Wscript.arguments.Item(0)

End If

If IsEmpty(strFlag) Then                'No arguments have been received

Wscript.Echo("Arguments are Required.")

intParseCmdLine = CONST_ERROR

Exit Function

End If

'Check if the user is asking for help or is just confused

If (strFlag="help") OR (strFlag="/h") OR (strFlag="\h") OR (strFlag="-h") _

OR (strFlag = "\?") OR (strFlag = "/?") OR (strFlag = "?") _

OR (strFlag="h") Then

intParseCmdLine = CONST_SHOW_USAGE

Exit Function

End If

'Retrieve the command line and set appropriate variables

intArgIter = 0

Do While intArgIter <= Wscript.arguments.Count - 1

Select Case Left(LCase(Wscript.arguments.Item(intArgIter)),2)

Case "/s"

intParseCmdLine = CONST_PROCEED

If Not blnGetArg("Server", strServer, intArgIter) Then

intParseCmdLine = CONST_ERROR

Exit Function

End If

intArgIter = intArgIter + 1

Case "/o"

If Not blnGetArg("Output File", strOutputFile, intArgIter) Then

intParseCmdLine = CONST_ERROR

Exit Function

End If

intArgIter = intArgIter + 1

Case "/u"

If Not blnGetArg("User Name", strUserName, intArgIter) Then

intParseCmdLine = CONST_ERROR

Exit Function

End If

intArgIter = intArgIter + 1

Case "/w"

If Not blnGetArg("User Password", strPassword, intArgIter) Then

intParseCmdLine = CONST_ERROR

Exit Function

End If

intArgIter = intArgIter + 1

Case "/f"

blnForce = True

intArgIter = intArgIter + 1

Case "/r"

blnReBoot = True

userarray(0) = blnReBoot

intArgIter = intArgIter + 1

Case "/q"

blnPowerOff = True

userarray(1) = blnPowerOff

intArgIter = intArgIter + 1

Case "/l"

blnLogOff = True

userarray(2) = blnLogoff

intArgIter = intArgIter + 1

Case "/p"

blnShutDown = True

userarray(3) = blnShutDown

intArgIter = intArgIter + 1

Case "/t"

If Not blnGetArg("Timer", intTimer, intArgIter) Then

intParseCmdLine = CONST_ERROR

Exit Function

End If

intArgIter = intArgIter + 1

Case Else 'We shouldn't get here

Call Wscript.Echo("Invalid or misplaced parameter: " _

& Wscript.arguments.Item(intArgIter) & vbCRLF _

& "Please check the input and try again," & vbCRLF _

& "or invoke with '/?' for help with the syntax.")

Wscript.Quit

End Select

Loop '** intArgIter <= Wscript.arguments.Count - 1

MyCount = 0

for i = 0 to 3

if userarray(i) = True then

MyCount = Mycount + 1

End if

Next

if Mycount > 1 then

intParseCmdLine = CONST_SHOW_USAGE

End if

If IsEmpty(intParseCmdLine) Then

intParseCmdLine = CONST_ERROR

Wscript.Echo("Arguments are Required.")

End If

End Function

'********************************************************************

'*

'* Sub ShowUsage()

'*

'* Purpose: Shows the correct usage to the user.

'*

'* Input:   None

'*

'* Output:  Help messages are displayed on screen.

'*

'********************************************************************

Private Sub ShowUsage()

Wscript.Echo ""

Wscript.Echo "Logoffs, Reboots, Powers Off, or Shuts Down a machine."

Wscript.Echo ""

Wscript.Echo "SYNTAX:"

Wscript.Echo "  Restart.vbs [/S ] [/U ] [/W ]"

Wscript.Echo "              [/O ]   

   [/T ]"

Wscript.Echo ""

Wscript.Echo "PARAMETER SPECIFIERS:"

wscript.echo "   /T            Amount of time to perform the function."

Wscript.Echo "   /Q            Perform Shutdown."

Wscript.Echo "   /P            Perform Poweroff."

Wscript.Echo "   /R            Perform Reboot."

Wscript.Echo "   /L            Perform Logoff."

Wscript.Echo "   /F            Force Function."

Wscript.Echo "   server        A machine name."

Wscript.Echo "   username      The current user's name."

Wscript.Echo "   password      Password of the current user."

Wscript.Echo "   outputfile    The output file name."

Wscript.Echo ""

Wscript.Echo "EXAMPLE:"

Wscript.Echo "1. cscript Restart.vbs /S MyMachine2 /R"

Wscript.Echo "   Reboots the current machine MyMachine2."

Wscript.Echo "2. cscript Restart.vbs /S MyMachine2 /R /F"

Wscript.Echo "   Forces MyMachine2 to reboot."

Wscript.Echo "3. cscript Restart.vbs /S MyMachine2 /R /T 30"

Wscript.Echo "   Reboots the current machine MyMachine2 in 30 seconds."

Wscript.Echo "NOTE:"

Wscript.Echo "   The force option will make the machine perform the function even " _

& "if there are"

Wscript.Echo "   open and unsaved docuements on the screen."

End Sub

'********************************************************************

'* General Routines

'********************************************************************

'********************************************************************

'*

'* Function strPackString()

'*

'* Purpose: Attaches spaces to a string to increase the length to intWidth.

'*

'* Input:   strString   a string

'*          intWidth    the intended length of the string

'*          blnAfter    Should spaces be added after the string?

'*          blnTruncate specifies whether to truncate the string or not if

'*                      the string length is longer than intWidth

'*

'* Output:  strPackString is returned as the packed string.

'*

'********************************************************************

Private Function strPackString( ByVal strString, _

ByVal intWidth,  _

ByVal blnAfter,  _

ByVal blnTruncate)

ON ERROR RESUME NEXT

intWidth      = CInt(intWidth)

blnAfter      = CBool(blnAfter)

blnTruncate   = CBool(blnTruncate)

If Err.Number Then

Call Wscript.Echo ("Argument type is incorrect!")

Err.Clear

Wscript.Quit

End If

If IsNull(strString) Then

strPackString = "null" & Space(intWidth-4)

Exit Function

End If

strString = CStr(strString)

If Err.Number Then

Call Wscript.Echo ("Argument type is incorrect!")

Err.Clear

Wscript.Quit

End If

If intWidth > Len(strString) Then

If blnAfter Then

strPackString = strString & Space(intWidth-Len(strString))

Else

strPackString = Space(intWidth-Len(strString)) & strString & " "

End If

Else

If blnTruncate Then

strPackString = Left(strString, intWidth-1) & " "

Else

strPackString = strString & " "

End If

End If

End Function

'********************************************************************

'*

'*  Function blnGetArg()

'*

'*  Purpose: Helper to intParseCmdLine()

'*

'*  Usage:

'*

'*     Case "/s"

'*       blnGetArg ("server name", strServer, intArgIter)

'*

'********************************************************************

Private Function blnGetArg ( ByVal StrVarName,   _

ByRef strVar,       _

ByRef intArgIter)

blnGetArg = False 'failure, changed to True upon successful completion

If Len(Wscript.Arguments(intArgIter)) > 2 then

If Mid(Wscript.Arguments(intArgIter),3,1) = ":" then

If Len(Wscript.Arguments(intArgIter)) > 3 then

strVar = Right(Wscript.Arguments(intArgIter), _

Len(Wscript.Arguments(intArgIter)) - 3)

blnGetArg = True

Exit Function

Else

intArgIter = intArgIter + 1

If intArgIter > (Wscript.Arguments.Count - 1) Then

Call Wscript.Echo( "Invalid " & StrVarName & ".")

Call Wscript.Echo( "Please check the input and try again.")

Exit Function

End If

strVar = Wscript.Arguments.Item(intArgIter)

If Err.Number Then

Call Wscript.Echo( "Invalid " & StrVarName & ".")

Call Wscript.Echo( "Please check the input and try again.")

Exit Function

End If

If InStr(strVar, "/") Then

Call Wscript.Echo( "Invalid " & StrVarName)

Call Wscript.Echo( "Please check the input and try again.")

Exit Function

End If

blnGetArg = True 'success

End If

Else

strVar = Right(Wscript.Arguments(intArgIter), _

Len(Wscript.Arguments(intArgIter)) - 2)

blnGetArg = True 'success

Exit Function

End If

Else

intArgIter = intArgIter + 1

If intArgIter > (Wscript.Arguments.Count - 1) Then

Call Wscript.Echo( "Invalid " & StrVarName & ".")

Call Wscript.Echo( "Please check the input and try again.")

Exit Function

End If

strVar = Wscript.Arguments.Item(intArgIter)

If Err.Number Then

Call Wscript.Echo( "Invalid " & StrVarName & ".")

Call Wscript.Echo( "Please check the input and try again.")

Exit Function

End If

If InStr(strVar, "/") Then

Call Wscript.Echo( "Invalid " & StrVarName)

Call Wscript.Echo( "Please check the input and try again.")

Exit Function

End If

blnGetArg = True 'success

End If

End Function

'********************************************************************

'*

'* Function blnConnect()

'*

'* Purpose: Connects to machine strServer.

'*

'* Input:   strServer       a machine name

'*          strNameSpace    a namespace

'*          strUserName     name of the current user

'*          strPassword     password of the current user

'*

'* Output:  objService is returned  as a service object.

'*          strServer is set to local host if left unspecified

'*

'********************************************************************

Private Function blnConnect(ByVal strNameSpace, _

ByVal strUserName,  _

ByVal strPassword,  _

ByRef strServer,    _

ByRef objService)

ON ERROR RESUME NEXT

Dim objLocator, objWshNet

blnConnect = False     'There is no error.

'Create Locator object to connect to remote CIM object manager

Set objLocator = CreateObject("WbemScripting.SWbemLocator")

If Err.Number then

Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & _

" occurred in creating a locator object." )

If Err.Description <> "" Then

Call Wscript.Echo( "Error description: " & Err.Description & "." )

End If

Err.Clear

blnConnect = True     'An error occurred

Exit Function

End If

'Connect to the namespace which is either local or remote

Set objService = objLocator.ConnectServer (strServer, strNameSpace, _

strUserName, strPassword)

ObjService.Security_.impersonationlevel = 3

If Err.Number then

Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & _

" occurred in connecting to server " _

& strServer & ".")

If Err.Description <> "" Then

Call Wscript.Echo( "Error description: " & Err.Description & "." )

End If

Err.Clear

blnConnect = True     'An error occurred

End If

'Get the current server's name if left unspecified

If IsEmpty(strServer) Then

Set objWshNet = CreateObject("Wscript.Network")

strServer     = objWshNet.ComputerName

End If

End Function

'********************************************************************

'*

'* Sub      VerifyHostIsCscript()

'*

'* Purpose: Determines which program is used to run this script.

'*

'* Input:   None

'*

'* Output:  If host is not cscript, then an error message is printed

'*          and the script is aborted.

'*

'********************************************************************

Sub VerifyHostIsCscript()

ON ERROR RESUME NEXT

Dim strFullName, strCommand, i, j, intStatus

strFullName = WScript.FullName

If Err.Number then

Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & " occurred." )

If Err.Description <> "" Then

Call Wscript.Echo( "Error description: " & Err.Description & "." )

End If

intStatus =  CONST_ERROR

End If

i = InStr(1, strFullName, ".exe", 1)

If i = 0 Then

intStatus =  CONST_ERROR

Else

j = InStrRev(strFullName, "\", i, 1)

If j = 0 Then

intStatus =  CONST_ERROR

Else

strCommand = Mid(strFullName, j+1, i-j-1)

Select Case LCase(strCommand)

Case "cscript"

intStatus = CONST_CSCRIPT

Case "wscript"

intStatus = CONST_WSCRIPT

Case Else       'should never happen

Call Wscript.Echo( "An unexpected program was used to " _

& "run this script." )

Call Wscript.Echo( "Only CScript.Exe or WScript.Exe can " _

& "be used to run this script." )

intStatus = CONST_ERROR

End Select

End If

End If

If intStatus <> CONST_CSCRIPT Then

Call WScript.Echo( "Please run this script using CScript." & vbCRLF & _

"This can be achieved by" & vbCRLF & _

"1. Using ""CScript Restart.vbs arguments"" for Windows 95/98 or" _

& vbCRLF & "2. Changing the default Windows Scripting Host " _

& "setting to CScript" & vbCRLF & "    using ""CScript " _

& "//H:CScript //S"" and running the script using" & vbCRLF & _

"    ""Restart.vbs arguments"" for Windows NT/2000." )

WScript.Quit

End If

End Sub

'********************************************************************

'*

'* Sub WriteLine()

'* Purpose: Writes a text line either to a file or on screen.

'* Input:   strMessage  the string to print

'*          objFile     an output file object

'* Output:  strMessage is either displayed on screen or written to a file.

'*

'********************************************************************

Sub WriteLine(ByVal strMessage, ByVal objFile)

On Error Resume Next

If IsObject(objFile) then        'objFile should be a file object

objFile.WriteLine strMessage

Else

Call Wscript.Echo( strMessage )

End If

End Sub

'********************************************************************

'*

'* Function blnErrorOccurred()

'*

'* Purpose: Reports error with a string saying what the error occurred in.

'*

'* Input:   strIn        string saying what the error occurred in.

'*

'* Output:  displayed on screen

'*

'********************************************************************

Private Function blnErrorOccurred (ByVal strIn)

If Err.Number Then

Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & ": " & strIn)

If Err.Description <> "" Then

Call Wscript.Echo( "Error description: " & Err.Description)

End If

Err.Clear

blnErrorOccurred = True

Else

blnErrorOccurred = False

End If

End Function

'********************************************************************

'*

'* Function blnOpenFile

'*

'* Purpose: Opens a file.

'*

'* Input:   strFileName        A string with the name of the file.

'*

'* Output:  Sets objOpenFile to a FileSystemObject and setis it to

'*            Nothing upon Failure.

'*

'********************************************************************

Private Function blnOpenFile(ByVal strFileName, ByRef objOpenFile)

ON ERROR RESUME NEXT

Dim objFileSystem

Set objFileSystem = Nothing

If IsEmpty(strFileName) OR strFileName = "" Then

blnOpenFile = False

Set objOpenFile = Nothing

Exit Function

End If

'Create a file object

Set objFileSystem = CreateObject("Scripting.FileSystemObject")

If blnErrorOccurred("Could not create filesystem object.") Then

blnOpenFile = False

Set objOpenFile = Nothing

Exit Function

End If

'Open the file for output

Set objOpenFile = objFileSystem.OpenTextFile(strFileName, 8, True)

If blnErrorOccurred("Could not open") Then

blnOpenFile = False

Set objOpenFile = Nothing

Exit Function

End If

blnOpenFile = True

End Function

'********************************************************************

'*                                                                  *

'*                           End of File                            *

'*                                                                  *

'********************************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值