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

不显示新窗口:
  1. @Echo off
  2. if "%1"=="ray" goto s
  3. call "%~0" ray
  4. echo Home here.
  5. pause>nul
  6. exit
  7. :s
  8. echo yes.
  9. ping -n 2 127.1>nul
  10. echo no.
  11. color f0
  12. exit /b
复制代码
显示新窗口:
  1. @echo off
  2. if "%1"=="ray" goto s
  3. start "" "%~0" ray
  4. echo Home here.
  5. pause>nul
  6. exit
  7. :s
  8. echo yes.
  9. ping -n 2 127.1>nul
  10. echo no.
  11. color f0
  12. exit
复制代码
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

回复 3# wolfan
  1. if "%1"=="ray" goto s
  2. start "" "%~0" ray
复制代码
你见过死循环么?也就是Start "" %0,这个会无限弹窗,导致内存耗尽的东西。我的第二句用start "" "%~0" ray就是为了防止这个死循环,用批处理start的批处理,首先会检查参数(if "%1"=="ray" goto s),如果发现%1是ray,就不会再start。如果没有判断,它就会一直start不停,导致无限弹窗

所以,第一句是为了判断是直接运行,还是批处理运行的,而我是用参数来判断的,%1就是第一个参数的意思

比如start "" "%~0" abc def

这样%1就是abc
%2就是def

第二句则是为了让批处理start它自己,并在后面加上ray(参数1),start后肯定又回到第一句,即“if "%1"=="ray" goto s”,检查参数1,如果是ray就去s,不要再start它自己。

明白么?

再附上一个代码
  1. @echo off
  2. if "%1"=="abc" goto abc
  3. start "" %0 abc
  4. echo 我是第一个窗口
  5. pause>nul
  6. exit
  7. :abc
  8. echo 我是第二个窗口
  9. echo.
  10. echo 由第一个窗口用start "" "%0 abc打开的
  11. pause>nul
  12. exit
复制代码
1

评分人数

为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

返回列表