Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件弹出菜单_Batch File_Login_Popup - Fatal编程技术网

Batch file 批处理文件弹出菜单

Batch file 批处理文件弹出菜单,batch-file,login,popup,Batch File,Login,Popup,您好,我想知道我是否可以为我的聊天程序创建一个简单的弹出式登录输入。以下是登录部分的代码: @echo off :home set ch==1 color 0b title Logon Screen cls echo Chat Login echo ___________________________ echo 1.Logon echo. echo 2.Create an Account

您好,我想知道我是否可以为我的聊天程序创建一个简单的弹出式登录输入。以下是登录部分的代码:

    @echo off

    :home

    set ch==1
    color 0b
    title Logon Screen
    cls
    echo        Chat Login
    echo ___________________________
    echo 1.Logon
    echo.
    echo 2.Create an Account
    echo.
    echo 3.Exit
    echo ___________________________
    echo.
    set /p ch=Choice Number:
    if %ch%==1 goto logon
    if %ch%==2 goto account
    if %ch%==3 goto exit
    color 0c
    echo Please enter a valid number
    ping localhost -n 2 >nul
    goto home

假设您指的是输入的弹出框,有两种基本的设置方法,一种生成javascript弹出框,另一种生成第二个命令窗口

对于javascript弹出框,您应该调用它,它是javascript的一个实现。一旦下载了它,就可以像Python一样从
cmd
调用它。你可以在一个单独的文件中,然后调用它

$ rhino file.js
第二种方法是调用第二个批处理文件,使用:

例如,它将包含一个输入

set /p username=Login: 
任何一种都可以,这取决于你喜欢什么样式。

试试这个:

@echo off
setlocal enableDelayedExpansion
if "%1"==":home" goto :home

  set r=r%random%
  set ch=1
  start /wait cmd /c "%~f0" :home

:ugly loop start
For /f "tokens=2,13 delims=, " %%a in (
    'tasklist /v /fo csv /fi "imagename eq cmd.exe"
    ^|findstr /v "Windows\\system32\\cmd.exe"
    ^|findstr "set /p=%r%"'
     ) do (
        set pid=%%a
        set ch=%%b
        set ch=!ch:%r%=!
        set ch=!ch:~,-2!
        )
>nul 2>&1 taskkill /pid %pid:"=%
:ugly loop end

 if %ch%==1 goto logon
 if %ch%==2 goto account
 if %ch%==3 goto exit

exit /b

:logon
echo logon &pause&exit/b
:account
echo account &pause&exit/b
:exit
echo exit &pause&exit/b

    :home    
    color 0b
    title Logon Screen
    mode con lines=15 cols=27
    cls
    echo        Chat Login
    echo ___________________________
    echo 1.Logon
    echo.
    echo 2.Create an Account
    echo.
    echo 3.Exit
    echo ___________________________
    echo.
    set /p ch=Choice Number: 
    set ch=!ch:"=!
    if not "%ch%"=="1" if not "%ch%"=="2" if not "%ch%"=="3" (
    color 0c
    echo Please enter a valid number
    ping localhost -n 2 >nul
    goto home
    ) 
    start /min cmd /k mode con lines=1 cols=14 ^&set/p %r%!ch!=
或:
将最后一行更改为

            `exit/b !ch!`<br>

这就简单多了

您是指一个弹出框来替换
set/p ch=选项编号:
,还是一个用于after
:login
?坚持使用
set/p
,不是更容易吗?为什么必须是popop?您的批处理可以使用SET/P直接在当前窗口中提示输入值。@TheDarkottle我指的是一个弹出窗口来替换SET/P ch=选择编号:使用SET/P肯定会更容易,但我更喜欢一个弹出窗口,它会让事情看起来更好看……好吧,任何一种方法都会提示输入值。但您的父批从未看到其价值。您需要一个方法将输入值传递回父批次。将值写入文件并使用SET/P或FOR/F批量读取该文件,或者将值写入标准输出,然后用FOR/F解析输出。我想我会从头开始,因为我不想进入java,让事情变得复杂。但唯一的一点是我讨厌cmd中的样式,因为你不能更改字体,除非你手动操作,而且样式等。@Batchmage可以吗?(如果是这样,你应该通过“勾选”答案来告诉我,即接受答案。)是的,不幸的是,这在批处理中是正确的,但是你需要使用JavaScript或VB来获得更好的外观。
            `exit/b !ch!`<br>
            `set ch=%errorlevel%`