标题: [文件操作] [已解决]批处理if语句出错,CMD.EXE直接强制退出(又出现新问题) [打印本页]
作者: 506860078 时间: 2012-9-29 20:15 标题: [已解决]批处理if语句出错,CMD.EXE直接强制退出(又出现新问题)
- @echo off
- :main
- set path=
- set/p path= 请拖入相关文件并敲击回车
- if "%path%"=="" goto exit
- echo %path%
- pause
- cls
- goto main
- :exit
复制代码
拖入无空格路径(文件名)时echo正常
拖入带空格路径(文件名)时提示“此时不应有xxxxx”
而删除这一句
if "%path%"=="" goto exit
之后就正常了,各位大大,真心求解啊
二楼大大提供了方法:
第4行改为:
if "%path:"=%"=="" goto exit
之前的问题解决了,新问题来了,直接敲击回车应该退出,但此时cmd.exe直接退出了,没有跳转到:exit。。。。。。。。。继续求解
作者: apang 时间: 2012-9-29 20:29
第4行改为:
if "%path:"=%"=="" goto exit
试试
作者: 506860078 时间: 2012-9-29 20:59
正常了,谢谢apang 大大了~
不过,可否告知,这个是为什么报错呢?
作者: 秋风·飞扬 时间: 2012-9-30 10:19
回复 2# apang
这句是什么情况,真的没见过这样的形式,能帮忙解答一下吗?
作者: missll 时间: 2012-9-30 10:57
第4行改为:
if "%path:"=%"=="" goto exit
试试
apang 发表于 2012-9-29 20:29
同问
"%path:"=%"
是怎么个意思呢?
作者: CrLf 时间: 2012-10-1 13:17
本帖最后由 CrLf 于 2012-10-1 13:24 编辑
回复 5# missll
路径含空格被拖入时会自动加引号,path含空格和引号导致此处 if 语句出现严重的语法错误,解决方法是使用变量延迟或用if defined再或者去除其中的分隔符或引号
作者: CrLf 时间: 2012-10-1 13:23
楼主的新问题原因在于path变量在set前并不为空,事实上也不建议用path变量来赋值,可改为下面的形式:- set "filepath="
- stt /p filepath=
- if not defined filepath goto exit
复制代码
作者: 秋风·飞扬 时间: 2012-10-2 13:52
回复 5# missll
哎我还以为新的语句,看样子那句的作用就是那种替换变量里的某个字符,我想复杂了
作者: 506860078 时间: 2012-10-3 10:32
非常感谢~
使用7楼方法顺利解决~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |