在批处理中如何接收键盘输入的空格符合
在批处理中需要接受键盘输入的空格符合,不知道如何操作。比如下面这个批处理程序:@echooff:homeclssetshut=""set/pshut=请确定是否关机(Y/...
在批处理中需要接受键盘输入的空格符合,不知道如何操作。
比如下面这个批处理程序:
@echo off
:home
cls
set shut=""
set /p shut=请确定是否关机(Y/N):
if %shut%=="" echo 没有任何输入,请按任意键重新输入
pause>hul
goto :home
if /I %shut%==y shutdown -s -f -t 00
if /I %shut%==n goto :home
echo.
echo 输入有误,请按任意键重新输入!
echo.
pause>nul
goto :home
这个批处理中如果直接输入空格键,批处理会自动退出,请问如何解决这个问题!(这里已经解决了输入错误和无输入这两种情况,但是没有解决输入为空格的情况)
请楼上的对添加的语句给与解释,比如if %shut% NEQ "" SET shut=%shut:~0,1% 语句中%shut:~0,1%代表的含义。因为本人是初学者,所以还请各位大虾给与详尽的解释……谢谢!
此外“biznow”给出的答案在我的机器上测试不通过,当从键盘输入空格的时候批处理还是会自动退出,没有有效的解决问题,请高手测试一下是否有效,谢谢!“忆林子”给出的答案测试也不通过,而且如果不初始化一个空值,连回车符都无法接收。 展开
比如下面这个批处理程序:
@echo off
:home
cls
set shut=""
set /p shut=请确定是否关机(Y/N):
if %shut%=="" echo 没有任何输入,请按任意键重新输入
pause>hul
goto :home
if /I %shut%==y shutdown -s -f -t 00
if /I %shut%==n goto :home
echo.
echo 输入有误,请按任意键重新输入!
echo.
pause>nul
goto :home
这个批处理中如果直接输入空格键,批处理会自动退出,请问如何解决这个问题!(这里已经解决了输入错误和无输入这两种情况,但是没有解决输入为空格的情况)
请楼上的对添加的语句给与解释,比如if %shut% NEQ "" SET shut=%shut:~0,1% 语句中%shut:~0,1%代表的含义。因为本人是初学者,所以还请各位大虾给与详尽的解释……谢谢!
此外“biznow”给出的答案在我的机器上测试不通过,当从键盘输入空格的时候批处理还是会自动退出,没有有效的解决问题,请高手测试一下是否有效,谢谢!“忆林子”给出的答案测试也不通过,而且如果不初始化一个空值,连回车符都无法接收。 展开
5个回答
展开全部
你的代码是自己写的?结构上面有些乱
开始不用给SHUT赋值的,而且在goto后面连接的home是不要加:标号的
你用我这套测试一下吧,输入的只要不是Y或N就提示重新输入,N直接退出批处理
测试之后还有问题你再补充,我会每天至少看一次
@echo off
:home
cls
set /p shut=请确定是否关机(Y/N):
if /I "%shut%"=="y" shutdown -s -f -t 00&&goto end
if /I "%shut%"=="n" (goto :eof) else (echo 输入有误,请按任意键重新输入!&&pause>nul&&goto home)
:end
echo 操作完成&&pause>nul&&goto :eof
ps:测试是否能关机时,你最好在shutdown前加一个echo,看一下有没有回显就好了,测试成功后再删掉echo。
如果你不希望关机时有提示,就把end标号和内容全删了,shut=y中的&&goto end也删了,更清爽
开始不用给SHUT赋值的,而且在goto后面连接的home是不要加:标号的
你用我这套测试一下吧,输入的只要不是Y或N就提示重新输入,N直接退出批处理
测试之后还有问题你再补充,我会每天至少看一次
@echo off
:home
cls
set /p shut=请确定是否关机(Y/N):
if /I "%shut%"=="y" shutdown -s -f -t 00&&goto end
if /I "%shut%"=="n" (goto :eof) else (echo 输入有误,请按任意键重新输入!&&pause>nul&&goto home)
:end
echo 操作完成&&pause>nul&&goto :eof
ps:测试是否能关机时,你最好在shutdown前加一个echo,看一下有没有回显就好了,测试成功后再删掉echo。
如果你不希望关机时有提示,就把end标号和内容全删了,shut=y中的&&goto end也删了,更清爽
展开全部
楼主的问题解决了,下面是我修改后的代码,能识别空格和无输入,请楼主注意:在复制下面的代码的时候一定要将每一行后面的空格去掉,否则运行出错
@echo off
:home
set shut=
set /p shut=请确定是否关机(Y/N):
if "%shut%"=="" (
echo 没有任何输入,请按任意键重新输入
goto home)
if "%shut%"==" " (
echo 输入的空格,不合要求,请按任意键重新输入
goto home)
if /I %shut% equ y shutdown -s -f -t 00
if /I %shut%==n goto :home
echo.
echo 输入有误,请按任意键重新输入!
echo.
pause>nul
goto :home
@echo off
:home
set shut=
set /p shut=请确定是否关机(Y/N):
if "%shut%"=="" (
echo 没有任何输入,请按任意键重新输入
goto home)
if "%shut%"==" " (
echo 输入的空格,不合要求,请按任意键重新输入
goto home)
if /I %shut% equ y shutdown -s -f -t 00
if /I %shut%==n goto :home
echo.
echo 输入有误,请按任意键重新输入!
echo.
pause>nul
goto :home
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的问题就出在第四行
set shut=""
你这里已经把它给初始化成""了,也就是两个引号
那你在下面如果不输入的话,这个值就一直是两个引号,你可以在判断之前加一句
echo %shut%
就可以知道它那里的结果是不是你输入的结果了。
你把
set shut=""
改成
set shut=
就可以了。
set shut=""
你这里已经把它给初始化成""了,也就是两个引号
那你在下面如果不输入的话,这个值就一直是两个引号,你可以在判断之前加一句
echo %shut%
就可以知道它那里的结果是不是你输入的结果了。
你把
set shut=""
改成
set shut=
就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
:home
cls
set shut=""
set /p shut=请确定是否关机(Y/N):
IF NOT "%shut%"=="" (
if %shut% NEQ "" SET shut=%shut:~0,1%
) else (
set shut="")
if /i %shut%==y goto y
if /i %shut%==n goto n
echo 选择无效,请重新输入
echo.
goto :home
:y
if /I %shut%==y shutdown -s -f -t 00
pause>hul
goto :home
:n
echo.
echo 输入有误,请按任意键重新输入!
echo.
pause>nul
goto :home
重新给你一个, 则试通过
:home
cls
set shut=""
set /p shut=请确定是否关机(Y/N):
IF NOT "%shut%"=="" (
if %shut% NEQ "" SET shut=%shut:~0,1%
) else (
set shut="")
if /i %shut%==y goto y
if /i %shut%==n goto n
echo 选择无效,请重新输入
echo.
goto :home
:y
if /I %shut%==y shutdown -s -f -t 00
pause>hul
goto :home
:n
echo.
echo 输入有误,请按任意键重新输入!
echo.
pause>nul
goto :home
重新给你一个, 则试通过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我晕,都不用那么复杂好吗,批处理中,如果只是要输入一个空格,那就可以用两个上引号,中间弄一个空格就可以了,这样就代表空格了
比如:修改注册表中的键值时,有的键值是有空格的,例如我修改注册表中的PaintDesktopVersion键值
REG ADD HKEY_CURRENT_USER\Control" "Panel\Desktop /V PaintDesktopVersion /T REG_DWORD /D 1 /F
上面这个修改注册表中,比如控制面板是CONTROL PANEL这之间有个空格,就可以用上面的方式空格开,你试试你的也用这种方式,就可以解决了
比如:修改注册表中的键值时,有的键值是有空格的,例如我修改注册表中的PaintDesktopVersion键值
REG ADD HKEY_CURRENT_USER\Control" "Panel\Desktop /V PaintDesktopVersion /T REG_DWORD /D 1 /F
上面这个修改注册表中,比如控制面板是CONTROL PANEL这之间有个空格,就可以用上面的方式空格开,你试试你的也用这种方式,就可以解决了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询