在批处理中如何接收键盘输入的空格符合

在批处理中需要接受键盘输入的空格符合,不知道如何操作。比如下面这个批处理程序:@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”给出的答案在我的机器上测试不通过,当从键盘输入空格的时候批处理还是会自动退出,没有有效的解决问题,请高手测试一下是否有效,谢谢!“忆林子”给出的答案测试也不通过,而且如果不初始化一个空值,连回车符都无法接收。
展开
 我来答
喵星大魔王
2008-09-01 · TA获得超过1145个赞
知道小有建树答主
回答量:572
采纳率:0%
帮助的人:706万
展开全部
你的代码是自己写的?结构上面有些乱
开始不用给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也删了,更清爽
百度网友c525f22
2008-08-31 · TA获得超过5012个赞
知道小有建树答主
回答量:994
采纳率:0%
帮助的人:1192万
展开全部
楼主的问题解决了,下面是我修改后的代码,能识别空格和无输入,请楼主注意:在复制下面的代码的时候一定要将每一行后面的空格去掉,否则运行出错
@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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忆林子
2008-08-31 · TA获得超过2034个赞
知道大有可为答主
回答量:4079
采纳率:0%
帮助的人:2709万
展开全部
你的问题就出在第四行
set shut=""
你这里已经把它给初始化成""了,也就是两个引号
那你在下面如果不输入的话,这个值就一直是两个引号,你可以在判断之前加一句
echo %shut%
就可以知道它那里的结果是不是你输入的结果了。
你把
set shut=""
改成
set shut=
就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
biznow
2008-08-31 · TA获得超过1683个赞
知道小有建树答主
回答量:1138
采纳率:0%
帮助的人:791万
展开全部
@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

重新给你一个, 则试通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xinzui52000
2008-09-03 · TA获得超过199个赞
知道答主
回答量:231
采纳率:0%
帮助的人:184万
展开全部
我晕,都不用那么复杂好吗,批处理中,如果只是要输入一个空格,那就可以用两个上引号,中间弄一个空格就可以了,这样就代表空格了
比如:修改注册表中的键值时,有的键值是有空格的,例如我修改注册表中的PaintDesktopVersion键值
REG ADD HKEY_CURRENT_USER\Control" "Panel\Desktop /V PaintDesktopVersion /T REG_DWORD /D 1 /F
上面这个修改注册表中,比如控制面板是CONTROL PANEL这之间有个空格,就可以用上面的方式空格开,你试试你的也用这种方式,就可以解决了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式