因此,当我打开我的批处理工具并登录时,它就崩溃了。有人知道为什么吗?每当我提供不正确的凭据时,系统都会显示“您输入的凭据不正确,请重试”。(这是正确的),但每当我键入user = root和pass = root时,它就会关闭/崩溃我的批处理文件。
@echo off
chcp 65001 >nul
:login
cls
color D
title Multi Tool
echo.
REM echo ██████╗ ██╗ ██████╗ ██████╗ ███╗ ███╗███████╗
REM echo ██╔══██╗██║ ██╔═══██╗██╔═══██╗████╗ ████║██╔════╝
REM echo ██████╔╝██║ ██║ ██║██║ ██║██╔████╔██║███████╗
REM echo ██╔══██╗██║ ██║ ██║██║ ██║██║╚██╔╝██║╚════██║
REM echo ██████╔╝███████╗╚██████╔╝╚██████╔╝██║ ╚═╝ ██║███████║
REM echo ╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
REM echo.
echo Login here
echo.
set /p user=Enter username:
echo.
set /p pass=Enter password:
if %user% == root if %pass% == root goto main
echo.
echo The credentials you entered are incorrect, try again.
timeout 3 >nul
goto login
:main
cls
REM echo.
REM echo ██████╗ ██╗ ██████╗ ██████╗ ███╗ ███╗███████╗
REM echo ██╔══██╗██║ ██╔═══██╗██╔═══██╗████╗ ████║██╔════╝
REM echo ██████╔╝██║ ██║ ██║██║ ██║██╔████╔██║███████╗
REM echo ██╔══██╗██║ ██║ ██║██║ ██║██║╚██╔╝██║╚════██║
REM echo ██████╔╝███████╗╚██████╔╝╚██████╔╝██║ ╚═╝ ██║███████║
REM echo ╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
REM echo.
echo Welcome to the main tool发布于 2021-02-08 03:32:46
这并不是对您问题的真正回答,但在底部包含了一个Pause命令,以防止在通过图形用户界面调用时关闭该命令。
它更多的是向您展示,当您想要显示您的艺术/横幅时,您应该使用带有标签名称的Call命令。
下面的示例仅在必要时更改活动代码页,并且仅针对文件的标题部分进行更改,将其返回到脚本其余部分的默认代码页。当您想在不显示横幅的情况下测试代码时,这种方法也更简单,因为您只需要在Call :banner行之前放置一个Rem方舟,而不是该技术的每个实例的每一行。
我还为username和password输入提示添加了一个三击规则。在我看来,这似乎是一个明智的想法,因为任何在三次尝试中都不能正确使用它的最终用户可能不应该使用它。
@Echo Off
SetLocal EnableExtensions
Title Multi Tool
Color 0D
GoTo login
:banner
For /F "Delims==" %%G In ('"(Set _cp) 2> NUL"') Do Set "%%G="
For /F Tokens^=* %%G In ('"%SystemRoot%\System32\chcp.com"') Do For %%H In (%%G
) Do Set "_cp=%%~nH"
If Not %_cp% Equ 65001 (Set "_cpc=TRUE"
"%SystemRoot%\System32\chcp.com" 65001 1> NUL)
Echo=
Echo ██████╗ ██╗ ██████╗ ██████╗ ███╗ ███╗███████╗
Echo ██╔══██╗██║ ██╔═══██╗██╔═══██╗████╗ ████║██╔════╝
Echo ██████╔╝██║ ██║ ██║██║ ██║██╔████╔██║███████╗
Echo ██╔══██╗██║ ██║ ██║██║ ██║██║╚██╔╝██║╚════██║
Echo ██████╔╝███████╗╚██████╔╝╚██████╔╝██║ ╚═╝ ██║███████║
Echo ╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
Echo=
If Defined _cpc ("%SystemRoot%\System32\chcp.com" %_cp% 1> NUL
For /F "Delims==" %%G In ('Set _cp') Do Set "%%G=")
Exit /B
:login
ClS
Call :banner
Echo Login here.
Set "i=0"
Echo=
:getuser
Set /A i += 1
Set "user="
Set /P "user=Enter username: "
Set "user=%user:"=%"
If /I Not "%user%" == "root" If %i% Lss 3 (GoTo getuser
) Else (Echo=
Echo The username you entered is incorrect, exiting.
%SystemRoot%\System32\timeout.exe /T 3 1> NUL
GoTo :EOF)
Set "i=0"
Echo=
:getpass
Set /A i += 1
Set "pass="
Set /P "pass=Enter password: "
Set "pass=%pass:"=%"
If /I Not "%pass%" == "root" If %i% Lss 3 (GoTo getpass
) Else (Echo=
Echo The credentials you entered are incorrect, try again.
%SystemRoot%\System32\timeout.exe /T 3 1> NUL
GoTo login)
Set "i="
Echo=
:main
ClS
Call :banner
Echo Welcome to the main tool.
Echo=
Pausehttps://stackoverflow.com/questions/66090186
复制相似问题