类似“前往”的东西?

问题描述 投票:0回答:2

我目前正在为我制作的一些 vbs 脚本制作一个简单愚蠢的 UI(用户界面)。我刚刚添加了一个在开头询问用户姓名的部分。我的问题是每次我使用此“后退”选项转到上一个“选项卡”时,它都会重新询问您的姓名。我已经寻找了许多不同的方法来让它发挥作用,但我做不到。我找不到循环/退出的方法来工作。我尝试将名称脚本分开,以便它在开始时运行它,当您返回时它会转到主脚本。但这意味着我在第二个脚本上不知道他们的名字,因为它没有变量值。这是脚本!.

Dim Input
Dim Input1
Dim Input2
Dim Input3
Dim InputName
InputName = Inputbox("Please Enter Your Name", "Name")
Input = Inputbox("Weclome " & InputName & "" & vbNewLine & "Choose One Of The Options!" & vbNewLine & "" & vbNewLine & "Information" & vbNewLine & "Cool" & vbNewLine & "Hacks" & vbNewLine & "Quit", "Solus")
If Input = "Information" Then
    Input1 = Inputbox("Here's The Information!" & vbNewLine & "" & vbNewLine & "Info" & vbNewLine & "Speech" & vbNewLine & "Back" & vbNewLine & "Quit", "Information")
    If Input1 = "Info" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Information\Info.txt"
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    ElseIf Input1 = "Speech" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Information\Speech.vbs"
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    ElseIf Input1 = "Back" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    ElseIf Input1 = "Quit" Then
        Wscript.Quit
    Else
        msgbox("Please Enter One Of The Options Next Time!")
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    End If
ElseIf Input = "Cool" Then
    Input2 = Inputbox("Here's Some Scripts!" & vbNewLine & "" & vbNewLine & "Abracadabra" & vbNewLine & "Calculator" & vbNewLine & "Matrix" & vbNewLine & "Back" & vbNewLine & "Quit", "Cool")
    If Input2 = "Abracadabra" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Abracadabra.vbs"
    ElseIf Input2 = "Calculator" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Calculator.vbs"
    ElseIf Input2 = "Matrix" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Matrix.bat"
    ElseIf Input2 = "Back" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    ElseIf Input2 = "Quit" Then
        Wscript.Quit
    Else
        msgbox("Please Enter One Of The Options Next Time!")
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    End If
ElseIf Input = "Hacks" Then
    Input3 = Inputbox("Here's Some Hacks!" & vbNewLine & "" & vbNewLine & "Failure" & vbNewLine & "Haxs" & vbNewLine & "Rekt" & vbNewLine & "Spam" & vbNewLine & "TheOnly" & vbNewLine & "Back" & vbNewLine & "Quit", "Hacks")
    If Input3 = "Failure" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Failure.vbs"
        Set Wsh Shell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    ElseIf  Input3 = "Hacks" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Haxs.vbs"
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    ElseIf Input3 = "Rekt" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Rekt.vbs"
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    ElseIf Input3 = "Back" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    ElseIf Input3 = "Spam" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Spam.bat"
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    ElseIf Input3 = "TheOnly" Then
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    ElseIf Input3 = "Quit" Then
        Wscript.Quit
    Else
        msgbox("Please Enter One Of The Options Next Time!")
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    End If
ElseIf Input = "Quit" Then
    Wscript.Quit
Else
    msgbox("Please Enter One Of The Options Next Time!")
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
End If

我如何使“返回”选项起作用是通过重新运行程序,以便它再次从头开始。将“返回”添加到主脚本后,它将是第一个运行的事情,并且每次返回时都会发生。这是我不能拥有的。如果我决定将名称部分分开,这样它就不会运行,主脚本将丢失名称变量并且无法使用它,它将毫无用处。我是新来的,如果我犯了一些错误,我很抱歉。 提前致谢! BTH

vbscript
2个回答
1
投票

Goto
语句可用,但通常认为使用它是不好的做法,因为它会将您的代码变成意大利面条。另外,循环也是一个不错的方法。收集姓名后,您将继续循环,直到该人在外部对话框中输入“退出”:

Dim Input
Dim Input1
Dim Input2
Dim Input3
Dim InputName

InputName = Inputbox("Please Enter Your Name", "Name")
Do While Input <> "Quit"
    Input = Inputbox("Weclome " & InputName & "" & vbNewLine & "Choose One Of The Options!" & vbNewLine & "" & vbNewLine & "Information" & vbNewLine & "Cool" & vbNewLine & "Hacks" & vbNewLine & "Quit", "Solus")

    If Input = "Information" Then

        Input1 = Inputbox("Here's The Information!" & vbNewLine & "" & vbNewLine & "Info" & vbNewLine & "Speech" & vbNewLine & "Back" & vbNewLine & "Quit", "Information")

        If Input1 = "Info" Then
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Information\Info.txt"
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        ElseIf Input1 = "Speech" Then
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Information\Speech.vbs"
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        ElseIf Input1 = "Back" Then
            'do nothing
        ElseIf Input1 = "Quit" Then
            Wscript.Quit
        Else
            msgbox("Please Enter One Of The Options Next Time!")
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        End If

    ElseIf Input = "Cool" Then

        Input2 = Inputbox("Here's Some Scripts!" & vbNewLine & "" & vbNewLine & "Abracadabra" & vbNewLine & "Calculator" & vbNewLine & "Matrix" & vbNewLine & "Back" & vbNewLine & "Quit", "Cool")

        If Input2 = "Abracadabra" Then
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Abracadabra.vbs"
        ElseIf Input2 = "Calculator" Then
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Calculator.vbs"
        ElseIf Input2 = "Matrix" Then
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Matrix.bat"
        ElseIf Input1 = "Back" Then
            'do nothing
        ElseIf Input2 = "Quit" Then
            Wscript.Quit
        Else
            msgbox("Please Enter One Of The Options Next Time!")
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        End If

    ElseIf Input = "Hacks" Then

        Input3 = Inputbox("Here's Some Hacks!" & vbNewLine & "" & vbNewLine & "Failure" & vbNewLine & "Haxs" & vbNewLine & "Rekt" & vbNewLine & "Spam" & vbNewLine & "TheOnly" & vbNewLine & "Back" & vbNewLine & "Quit", "Hacks")

        If Input3 = "Failure" Then
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Failure.vbs"
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        ElseIf  Input3 = "Hacks" Then
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Haxs.vbs"
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        ElseIf Input3 = "Rekt" Then
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Rekt.vbs"
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        ElseIf Input1 = "Back" Then
            'do nothing
        ElseIf Input3 = "Spam" Then
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Spam.bat"
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        ElseIf Input3 = "TheOnly" Then
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        ElseIf Input3 = "Quit" Then
            Wscript.Quit
        Else
            msgbox("Please Enter One Of The Options Next Time!")
            Set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        End If
    Elseif Input = "Quit" Then
        'do nothing. While loop will exit
    Else
        msgbox("Please Enter One Of The Options Next Time!")
        Set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
    End If
Loop

0
投票
Option Explicit
Dim wshShell, Input, Input1, Input2, Input3, inputName, optNum
Set wshShell = WScript.CreateObject("WScript.Shell")

'========================================================================================================
'Function to check that the input is valid
'========================================================================================================
FUNCTION InvalidCheck(ByVal optNum)
    IF IsEmpty(Input) THEN
        wscript.Quit
    ELSEIF Input = "" THEN
        wshShell.Popup Space(2) & "Please select an option or click Cancel to quit.",4,Space(40) & "Retry or Quit",vbExclamation
    ELSEIF NOT IsNumeric(Input) THEN
        wshShell.Popup "Only numbers are valid.",4,SPACE(15) & "Non numeric entry",vbExclamation
        IF Input = Input1 THEN
'           wscript.echo "Input is set to input1"
            Input1 = ""
        ELSEIF Input = Input2 THEN
'           wscript.echo "Input is set to input2"
            Input2 = ""
        ELSEIF Input = Input3 THEN
'           wscript.echo "Input is set to input3"
            Input3 = ""
        ELSE
            Input = ""
        END IF
    ELSEIF Input > optNum THEN
        wshShell.Popup "Only 1 - " & optNum & " are valid entries.",4,SPACE(25) & "Invalid entry >",vbExclamation
        IF Input = Input1 THEN
'           wscript.echo "Input is set to input1"
            Input1 = ""
        ELSEIF Input = Input2 THEN
'           wscript.echo "Input is set to input2"
            Input2 = ""
        ELSEIF Input = Input3 THEN
'           wscript.echo "Input is set to input3"
            Input3 = ""
        ELSE
            Input = ""
        END IF
    END IF
END FUNCTION
'========================================================================================================
'Get user's name
'========================================================================================================
DO
    InputName = Inputbox(vbNewLine & vbNewLine & SPACE(25) & "Please Enter Your Name.",SPACE(40) & "Name Entry")
    IF IsEmpty(InputName) THEN
        wscript.Quit
    ELSEIF InputName = "" THEN
        wshShell.Popup Space(2) & "Please enter your name or click Cancel to quit.",4,Space(40) & "Retry or Quit",vbInformation
    END IF
LOOP WHILE InputName = ""
'========================================================================================================
'Menu Navigation
'========================================================================================================
DO
    Input = Inputbox(SPACE(40) & "Welcome " & InputName & "!" & vbNewLine & vbNewLine & "Choose One Of The Options:" &_
    vbNewLine & vbCR & "(1) Information" & vbCR & vbCR & "(2) Cool" & vbCR & vbCR & "(3) Hacks" & vbCR & vbCR & "Click Cancel to quit",SPACE(45) & "Solus")
    optNum = "3"
    InvalidCheck optNum 
    IF Input = "0" THEN
        wshShell.Popup "Only 1 - " & optNum & " are valid entries.",4,SPACE(25) & "Invalid entry",vbExclamation
        Input = ""
    END IF
'   ========================================================================================================
'   "Information" Menu Navigation
'   ========================================================================================================
    IF Input = "1" Then
        DO
        Input1 = Inputbox(vbCR & "(1) Info" & vbCR & vbCR & "(2) Speech" & vbCR & vbCR &_
        "(0) Back" & vbCR & vbCR & "Click Cancel to quit",SPACE(35) & "Information Menu")
        optNum = "2"
        Input = Input1
        inValidCheck(optNum)
        IF Input1 = "1" Then
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Information\Info.txt"
        ElseIf Input1 = "2" Then
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Information\Speech.vbs"
        ElseIf Input1 = "0" Then
            Input = ""
            optNum = ""
        End If
        LOOP WHILE Input1 = ""
'   ========================================================================================================
'   "Cool" Menu Navigation
'   ========================================================================================================
    ElseIf Input = "2" Then
        DO
        Input2 = Inputbox(vbCR & "(1) Abracadabra" & vbCR & vbCR & "(2) Calculator" & vbCR & vbCR &_
        "(3) Matrix" & vbCR & vbCR & "(0) Back"& vbCR & vbCR & "Click Cancel to quit",SPACE(45) & "Cool")
        optNum = "3"
        Input = Input2
        inValidCheck(optNum)
        If Input2 = "1" Then
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Abracadabra.vbs"
        ElseIf Input2 = "2" Then
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Calculator.vbs"
        ElseIf Input2 = "3" Then
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Matrix.bat"
        ElseIf Input2 = "0" Then
            Input = ""
            optNum = ""
        End If
        LOOP WHILE Input2 = ""
'   ========================================================================================================
'   "Hacks" Menu Navigation
'   ========================================================================================================
    ElseIf Input = "3" Then
        DO
        Input3 = Inputbox(vbCR & "(1) Failure" & vbCR & vbCR & "(2) Haxs" & vbCR & vbCR & "(3) Rekt" & vbCR & vbCR &_
        "(4) Spam" & vbCR & vbCR & "(5) TheOnly" & vbCR & vbCR & "(0) Back"& vbCR & vbCR & "Click Cancel to quit",SPACE(45) & "Hacks")
        optNum = "5"
        Input = Input3
        inValidCheck(optNum)
        If Input3 = "1" Then
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Failure.vbs"
        ElseIf  Input3 = "2" Then
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Haxs.vbs"
        ElseIf Input3 = "3" Then
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Rekt.vbs"
        ElseIf Input3 = "4" Then
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Spam.bat"
        ElseIf Input3 = "5" Then
            WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs"
        ElseIf Input3 = "0" Then
            Input = ""
            optNum = ""
        End If
        LOOP WHILE Input3 = ""
    End If
Loop While Input = ""

'========================================================================================================
'Cleanup
'========================================================================================================
Set wshShell = Nothing
© www.soinside.com 2019 - 2024. All rights reserved.