批量检查空用户输入

时间:2015-09-09 13:17:25

标签: string variables batch-file if-statement

我正在努力进行简单的检查,如果用户输入只是空(Enter),并且如果将变量设置为新值...花费一个小时但它不起作用。 目标是让输入的值以反斜杠开头,如果没有输入,则只是一个空字符串。

代码:

SET myTargetServerInstanceName=anyNOPEdummyValue
SET /P myTargetServerInstanceName=Enter Target Server INSTANCE Name:    
IF %myTargetServerInstanceName%==anyNOPEdummyValue SET myTargetServerInstanceName=
IF NOT %myTargetServerInstanceName% == [] SET myTargetServerInstanceName=\%myTargetServerInstanceName%

导致错误:

  

此时SET意外。

3 个答案:

答案 0 :(得分:8)

检查空变量的常用方法是比较其"%value%"是否为""。但是,为了使其正常工作,您必须set /P之前删除变量,因为如果用户只需按Enter键,则变量的先前值为而不是改性:

set "var="
set /P var=
if "%var%" equ "" set "var=default value"

但是,更简单的方法是使用if defined

set "var="
set /P var=
if not defined var set "var=default value"

以前的方法不需要延迟扩展。

作为前面描述的推论,您可以通过这种方式获得相同的结果:

set "var=default value"
set /P var=

答案 1 :(得分:2)

您可以检查set /p操作是否成功

set /p "var=prompt text?" || set "var=default value"

如果您更喜欢set / if,当您检查可以为空或包含空格的值时,最好使用引号

if "%var%"=="" set "var=default value"

或者,由于未定义没有内容的变量,您可以使用

检查此案例
if not defined var set "var=default value"

答案 2 :(得分:0)

我建议在if中附上<{1}}比较部分的两侧

"

如果其中一个比较表达式(SET myTargetServerInstanceName=anyNOPEdummyValue SET /P myTargetServerInstanceName=Enter Target Server INSTANCE Name: IF "%myTargetServerInstanceName%"=="anyNOPEdummyValue" SET myTargetServerInstanceName= IF NOT "%myTargetServerInstanceName%"=="" SET myTargetServerInstanceName=\%myTargetServerInstanceName% 的左侧或右侧)扩展为空字符串,则会收到语法错误。