Board logo

标题: [文件操作] [已解决]批处理if语句出错,CMD.EXE直接强制退出(又出现新问题) [打印本页]

作者: 506860078    时间: 2012-9-29 20:15     标题: [已解决]批处理if语句出错,CMD.EXE直接强制退出(又出现新问题)

  1. @echo off
  2. :main
  3. set path=
  4. set/p path= 请拖入相关文件并敲击回车
  5. if "%path%"=="" goto exit
  6. echo %path%
  7. pause
  8. cls
  9. goto main
  10. :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变量来赋值,可改为下面的形式:
  1. set "filepath="
  2. stt /p filepath=
  3. 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