【问题标题】:Batch file closes after a goto command批处理文件在 goto 命令后关闭
【发布时间】:2017-11-10 06:51:38
【问题描述】:

这是代码

@echo off 
color 0a
:user_login
set /p username=What is your username?
if %username% == admin (
cls
 goto admin_request_password
)

echo Incorrect username please try again.
cls
goto user_login

:admin_request_password

set /p Password=What is your Encryption Key?:
if %Password% == ecca1924889236 (
pause
cls
goto admin_menu
pause
 )

echo Incorrect password
pause
cls
goto user_login



:admin_menu

echo Type acct_info for account info.
echo Type site_key for website file manager.
echo type ip_info for your ip info.
echo Type close to close the Net-Sec portal
goto admin_menu_process

:admin_menu_process
set /a choice=Waiting for Request:
if %choice% == acct_info (
cls
goto acct_info ) echo Incorrect term cls goto admin_menu

if %choice%  == site_key (
goto site_key  )echo Incorrect term
cls
goto admin_menu

if %choice% == ip_info (
goto ip_info ) echo Incorrect term 
cls 
goto admin_menu

if %choice% == close (
goto close ) echo Incorrect term 
cls 
goto admin_menu
:ip_info
ipconfig 
pause
cls
goto admin_menu


:acct_info
echo Your username is: admin
echo your password is: ecca1924889236
pause
cls 
goto admin_menu




:site_info
The username is: net-sec
The password is: netsec127
pause
cls
goto admin_menu


:close 
cls

【问题讨论】:

  • 在哪个 goto 命令之后它会关闭?
  • 标签:site_info 后面的两行缺少回显。否则代码很简单。您应该阅读help choice 以获得更好的选择;-)

标签: batch-file command-line-arguments


【解决方案1】:

建议:

  • 不要将变量设置为%username%,因为它已经是一个现有的系统变量。
  • 在字符串比较中用双引号将两个字符串括起来。
  • 当您有一组已知选项时,请使用 choice 命令。
  • 尽量不要包含不必要的标签。

这是对您的代码的重写,希望对您的脚本攻击有所帮助:

@Echo Off
Color 0A

:getName
ClS
Set/P "uname=What is your username? "
If /I Not "%uname%"=="admin" (Echo Incorrect username please try again.
    >Nul Timeout 3
    GoTo getName)

:getPass
ClS
Set/P "password=What is your encryption key? "
If Not "%password%"=="ecca1924889236" (Echo Incorrect password please try again.
    >Nul Timeout 3
    GoTo getPass)

:menu
ClS
Echo [1] Account information.
Echo [2] Website File Manager.
Echo [3] IP information.
Echo [4] Close the Net-Sec portal.

Choice /C 1234 /M "Enter your request"

If ErrorLevel 4 GoTo close
If ErrorLevel 3 GoTo ip_info
If ErrorLevel 2 GoTo site_info
If ErrorLevel 1 GoTo acct_info

GoTo :EOF

:acct_info
Echo Your username is: admin
Echo your password is: ecca1924889236
Timeout 3
GoTo menu

:site_info
Echo The username is: net-sec
Echo The password is: netsec127
Timeout 3
GoTo menu

:ip_info
IPConfig
Timeout -1
GoTo menu

:close 
ClS
Echo Closing...
Timeout 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2020-09-29
    • 2013-01-15
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    相关资源
    最近更新 更多