Dos - 如何根据用户输入检查变量名是否存在?
Dos - How to check Variable Name exist based on user Input?
我有以下批处理代码,我想检查用户何时键入,例如SB1 作为输入,SB1 Varialbe Name 存在。就我而言,它确实存在。但是如果用户键入 SX1 那么它不会退出。
@ECHO OFF
set "SB1=hannlsb1.mydomain.com:30515 -i 05"
set "DB1=hannlsd2.mydomain.com:31315 -i 13"
set "QB1=hannlsqa1-1:30115 -i 01"
set "DB0=hannlsd1.mydomain.com -i 10"
set "QB0=hannlsps1-1.mydomain.com-i 03"
set "WB1=hannlsqa1-1:30315 -i 03"
set "VB1=hannlsvt-1.mydomain.com -i 01"
@ECHO OFF
SET /P sysid=Please enter SystemID:
IF "%sysid%"=="" GOTO Error
REM ECHO Hello %sysid%, Welcome to DOS inputs!
GOTO End
:Error
ECHO You did not enter System ID! Bye bye!!
:End
这是一种使用 FOR /F
到 运行 回显命令的方法,该命令将 sysid 扩展为其表达式中间的值,然后再次扩展该值。
@echo off
set "SB1=hannlsb1.mydomain.com:30515 -i 05"
set "DB1=hannlsd2.mydomain.com:31315 -i 13"
set "QB1=hannlsqa1-1:30115 -i 01"
set "DB0=hannlsd1.mydomain.com -i 10"
set "QB0=hannlsps1-1.mydomain.com-i 03"
set "WB1=hannlsqa1-1:30315 -i 03"
set "VB1=hannlsvt-1.mydomain.com -i 01"
SETLOCAL ENABLEDELAYEDEXPANSION
SET /P sysid=Please enter SystemID:
FOR /F "usebackq delims==" %%i IN (`echo+!%sysid%!`) DO SET val=%%i
SETLOCAL DISABLEDELAYEDEXPANSION
IF NOT "%val%"=="" (
ECHO Hello %sysid%, Welcome to DOS inputs!
) ELSE (
ECHO You did not enter System ID! Bye bye!!
)
请注意,延迟扩展有一个不幸的问题 side-effect,即启用它后您不能在 echo 命令中包含感叹号。
我有以下批处理代码,我想检查用户何时键入,例如SB1 作为输入,SB1 Varialbe Name 存在。就我而言,它确实存在。但是如果用户键入 SX1 那么它不会退出。
@ECHO OFF
set "SB1=hannlsb1.mydomain.com:30515 -i 05"
set "DB1=hannlsd2.mydomain.com:31315 -i 13"
set "QB1=hannlsqa1-1:30115 -i 01"
set "DB0=hannlsd1.mydomain.com -i 10"
set "QB0=hannlsps1-1.mydomain.com-i 03"
set "WB1=hannlsqa1-1:30315 -i 03"
set "VB1=hannlsvt-1.mydomain.com -i 01"
@ECHO OFF
SET /P sysid=Please enter SystemID:
IF "%sysid%"=="" GOTO Error
REM ECHO Hello %sysid%, Welcome to DOS inputs!
GOTO End
:Error
ECHO You did not enter System ID! Bye bye!!
:End
这是一种使用 FOR /F
到 运行 回显命令的方法,该命令将 sysid 扩展为其表达式中间的值,然后再次扩展该值。
@echo off
set "SB1=hannlsb1.mydomain.com:30515 -i 05"
set "DB1=hannlsd2.mydomain.com:31315 -i 13"
set "QB1=hannlsqa1-1:30115 -i 01"
set "DB0=hannlsd1.mydomain.com -i 10"
set "QB0=hannlsps1-1.mydomain.com-i 03"
set "WB1=hannlsqa1-1:30315 -i 03"
set "VB1=hannlsvt-1.mydomain.com -i 01"
SETLOCAL ENABLEDELAYEDEXPANSION
SET /P sysid=Please enter SystemID:
FOR /F "usebackq delims==" %%i IN (`echo+!%sysid%!`) DO SET val=%%i
SETLOCAL DISABLEDELAYEDEXPANSION
IF NOT "%val%"=="" (
ECHO Hello %sysid%, Welcome to DOS inputs!
) ELSE (
ECHO You did not enter System ID! Bye bye!!
)
请注意,延迟扩展有一个不幸的问题 side-effect,即启用它后您不能在 echo 命令中包含感叹号。