[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理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。。。。。。。。。继续求解

第4行改为:
if "%path:"=%"=="" goto exit
试试

TOP

正常了,谢谢apang 大大了~
不过,可否告知,这个是为什么报错呢?

TOP

回复 2# apang


    这句是什么情况,真的没见过这样的形式,能帮忙解答一下吗?

TOP

第4行改为:
if "%path:"=%"=="" goto exit
试试
apang 发表于 2012-9-29 20:29



同问

"%path:"=%"

是怎么个意思呢?
花开不问月,不语笑红尘.

TOP

本帖最后由 CrLf 于 2012-10-1 13:24 编辑

回复 5# missll


    路径含空格被拖入时会自动加引号,path含空格和引号导致此处 if 语句出现严重的语法错误,解决方法是使用变量延迟或用if defined再或者去除其中的分隔符或引号

TOP

楼主的新问题原因在于path变量在set前并不为空,事实上也不建议用path变量来赋值,可改为下面的形式:
  1. set "filepath="
  2. stt /p filepath=
  3. if not defined filepath goto exit
复制代码

TOP

回复 5# missll


   哎我还以为新的语句,看样子那句的作用就是那种替换变量里的某个字符,我想复杂了

TOP

非常感谢~
使用7楼方法顺利解决~

TOP

返回列表