Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在bat文件中检测[输入]键_Batch File_Batch Processing - Fatal编程技术网

Batch file 在bat文件中检测[输入]键

Batch file 在bat文件中检测[输入]键,batch-file,batch-processing,Batch File,Batch Processing,我给我的用户几个选项,然后等待他们的输入。在我的测试中,当我按下[Enter]键并输入任何选项时,程序将崩溃并烧掉。它给了我一个错误”(此时出乎意料)。我如何检测用户是否只按[Enter]键 这是我的 :pickClient set clientNum= cls echo. echo Pick a Client echo. echo. echo 1. Client 1 echo. echo 2. Client 2 echo. echo. echo [E] - EXIT echo

我给我的用户几个选项,然后等待他们的输入。在我的测试中,当我按下[Enter]键并输入任何选项时,程序将崩溃并烧掉。它给了我一个错误”(此时出乎意料)。我如何检测用户是否只按[Enter]键

这是我的

:pickClient
set clientNum=
cls
echo.
echo  Pick a Client
echo.
echo.
echo    1. Client 1
echo.
echo    2. Client 2
echo.
echo.
echo   [E] - EXIT
echo.
set /p clientNum=Input selection.  

if %clientNum%==1 (

     set client=client1Name

) else if %clientNum%==2 (

     set client=client2Name

) else if /i %clientNum%==E (

     GOTO goAway

) else if %clientNum%==" " (

     GOTO pickClient

) else (

     GOTO pickClient

)

我知道了!我就是这么做的

set clientNum=
cls
echo.
echo  Pick a Client
echo.
echo.
echo    1. Client 1
echo.
echo    2. Client 2
echo.
echo.
echo   [E] - EXIT
echo.
set /p clientNum=Input selection.  

IF NOT DEFINED clientNum GOTO pickClient  <---I added this line of code. *****

if %clientNum%==1 (

     set client=client1Name

) else if %clientNum%==2 (

     set client=client2Name

) else if /i %clientNum%==E (

     GOTO goAway

) else if %clientNum%==" " (

     GOTO pickClient

) else (

     GOTO pickClient

)

注意这些引语。通过投票支持他的意见,给他一些爱。我非常感激。

我明白了!以下是我所做的

set clientNum=
cls
echo.
echo  Pick a Client
echo.
echo.
echo    1. Client 1
echo.
echo    2. Client 2
echo.
echo.
echo   [E] - EXIT
echo.
set /p clientNum=Input selection.  

IF NOT DEFINED clientNum GOTO pickClient  <---I added this line of code. *****

if %clientNum%==1 (

     set client=client1Name

) else if %clientNum%==2 (

     set client=client2Name

) else if /i %clientNum%==E (

     GOTO goAway

) else if %clientNum%==" " (

     GOTO pickClient

) else (

     GOTO pickClient

)

请注意引号。通过向上投票他的输入给ths一些爱。我非常感激。如果您只需按enter键,变量为空,您的比较结果为空

if %clientNum%==1 (
变成

if ==1 (
这是非法的。为了防止出现此类问题或变量值中出现空格,请务必在
if
中的变量和值周围加引号:

if "%clientNum%"=="1" (
然后变成

if ""=="1" (

这是一条有效的语句。

如果您只需按enter键,则变量为空,您的比较结果为空

if %clientNum%==1 (
变成

if ==1 (
这是非法的。为了防止出现此类问题或变量值中出现空格,请务必在
if
中的变量和值周围加引号:

if "%clientNum%"=="1" (
然后变成

if ""=="1" (

这是一个有效的声明。

谢谢@ths的帮助!我不知道引号。我对批处理非常陌生,因此非常感谢任何帮助。我将对批处理进行编辑。若要添加此内容,请使用“if”%clientNum%=“if”`是否需要检查变量是否已定义?谢谢@ths的帮助!我不知道引号。我对批处理非常陌生,因此非常感谢您的帮助。我将对批处理进行编辑。若要添加此内容,请使用`if”%clientNum%”==“”`是否需要检查变量是否已定义?请随意接受
ths
的答案-查看“帮助”菜单中的
教程
。您可以使用
if
/i
参数来忽略大小写,从而缩短程序。谢谢@Stephan!感谢您的输入!我不知道帽子是可用的。我已经更新了我的代码以反映这一点。请随意接受
ths
的答案-请参阅“帮助”菜单中的
教程
。您可以使用
if
/I
参数来忽略大写。谢谢@Stephan!感谢您的输入!我不知道这是ava我已经更新了我的代码来反映这一点。