标题: [其他] 批处理报错“不是内部或外部命令,也不是可运行的程序或批处理文件”是什么原因 [打印本页]
作者: Lornan 时间: 2014-12-10 11:28 标题: 批处理报错“不是内部或外部命令,也不是可运行的程序或批处理文件”是什么原因
这是源命令- @echo on
- :start
- echo =====POWER TOOL=====
- echo To restart press 1
- echo To logoff press 2
- echo To shutdown press 3
- echo To exit me press any other key
- set NUM=
- set /p NUM=Press the key you choose:
- %errorlevel%
- if "%NUM%"=="1" (
- shutdown -r
- )
- if "%NUM%"=="2" (
- logoff
- )
- if "%NUM%"=="3" (
- shutdown -s
- )
- %errorlevel%
- pause
- call :start
- pause
复制代码
这是运行后的图片
还有就是输入了1,为什么返回的是“1不是………………”这个信息?(不过shutdown命令依旧在我输入1后被执行了
作者: DAIC 时间: 2014-12-10 11:32
是第20行代码
作者: Lornan 时间: 2014-12-10 16:09
回复 2# DAIC
20行不是程序返回码吗?图中为什么会显示“0不是……”,这意思是返回码被当作外部文本被输入了?
还有前面输入1,既然它显示“1不是……”,那为什么实际运行的时候shutdown命令还是被执行了?
作者: amwfjhh 时间: 2014-12-10 16:26
回复 3# Lornan
批处理是以"关键字+分割符+参数表"的方式来解析每行代码的,你这里面出错的两行就是少了关键字这么一个重要元素,所以它将第一个出现的值作为关键字来解析,也就是说将1和0当成一个命令来看,显然,系统中没有这样的命令,所以提示错误,如果想单纯显示该值,请加相应关键字和分割符,比如复制代码
作者: DAIC 时间: 2014-12-10 21:08
回复 3# Lornan
查看返回码应该是 echo %errorlevel%
作者: Lornan 时间: 2014-12-10 22:38
回复 4# amwfjhh
恩恩,突然想起来了,谢谢
作者: Lornan 时间: 2014-12-10 22:38
回复 5# DAIC
嗯,对,谢谢
作者: Lornan 时间: 2014-12-10 22:40
那这个if else语句哪有错?为什么执行了if又执行了else的?
作者: DAIC 时间: 2014-12-11 08:23
回复 8# Lornan - @echo off
- :start
- echo =====POWER TOOL=====
- echo To restart press 1
- echo To logoff press 2
- echo To shutdown press 3
- echo To exit me press any other key
- set NUM=
- set /p NUM=Press the key you choose:
- echo %errorlevel%
- if "%NUM%"=="1" (
- shutdown -r
- ) else if "%NUM%"=="2" (
- logoff
- ) else if "%NUM%"=="3" (
- shutdown -s
- )
- echo %errorlevel%
- pause
- goto :start
- pause
复制代码
作者: Lornan 时间: 2014-12-11 13:13
回复 9# DAIC
喔喔,懂了,我的else是当NUM不等于3时就被执行的。而不是不等于1,2,3时才被执行的,要想在不等于1,2,3中任意一个时就echo的话,必须在每一个if语句后都加上相应的else语句 ,一个else只对当前一个if有效,对吧?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |