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%`