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

[文件操作] 批处理goto命令不会直接跳转?

以下代码为什么会跳转到:1之前还好运行 start "" /b %0 1???
  1. @echo off
  2. if "%1"=="1" goto :%1
  3. start "" /b %0 1
  4. ping -t 127.1
  5. :1
  6. pause >nul
  7. exit
复制代码

如果是标准环境下双击运行的bat,%1的值是空的,自然不满足跳转条件

TOP

但start的语句没有完全运行完,又会跳转回if 语句???
  1. C:\Documents and Settings\Administrator\桌面>if "" == "1" goto :
  2. C:\Documents and Settings\Administrator\桌面>start "" /b "C:\Documents and Setti
  3. ngs\Administrator\桌面\新建 文本文档.bat" 1
  4. C:\Documents and Settings\Administrator\桌面>ping -t 127.1
  5. C:\Documents and Settings\Administrator\桌面>if "1" == "1" goto :1
  6. C:\Documents and Settings\Administrator\桌面>pause  1>nul
  7. Pinging 127.0.0.1 with 32 bytes of data:
  8. Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
  9. Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
复制代码

[ 本帖最后由 qwe777 于 2011-3-6 22:37 编辑 ]

TOP

  1. if "%1"=="1" goto :%1
  2. start "" /b %0 1
  3. echo I am first pause
  4. pause
  5. :1
  6. echo I am second pause
  7. pause
复制代码
  1. if "%1"=="1" goto :%1
  2. call %0 1
  3. echo I am first pause
  4. pause
  5. :1
  6. echo I am second pause
  7. pause
复制代码

TOP

运行的时候实际执行的是:
  1. @echo off
  2. if ""=="1" goto :
  3. start "" /b %0 1
  4. ping -t 127.1
  5. if "1"=="1" goto :1
  6. start "" /b %0 1
  7. pause >nul
  8. exit
  9. pause >nul
  10. exit
复制代码

TOP

if的语句不是运行完了吗,为什么还会运行第二遍。
还有"%1"第一次是为空,而第二次却是为1/???
小弟比较笨,请问有哪位高手能详细都解一下啊???

  1. if "%1"=="1" goto :%1
  2. start "" /b %0 1
  3. echo I am first pause
  4. pause
  5. :1
  6. echo I am second pause
  7. pause
复制代码

TOP

你把 start /b  ,/B 开关去掉。
然后仔细看一下运行过程。

TOP

为什么"%1"第一次是为空,而第二次却是为1/???

TOP

返回列表