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

[已解决]批处理如何在新CMD窗口中执行命令?

本帖最后由 wolfan 于 2011-8-20 22:56 编辑

如何在一个新CMD窗口中执行相关命令,一定时间后自动关闭。
  1. 1.bat
  2. start cmd ??????  <--- 不知如何在这启动:S
  3. call :s  <-------  这个:S 在新窗口中执行。
  4. :s
  5. echo yes.
  6. ping 127.1 -n 5 >nul
  7. echo no.
  8. color 12
  9. goto home  <----- 这个HOME是在1.BAT中
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

我写了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

回复 2# raymai97


    多谢IN~ 、
那个,请问,这个的核心是那部份,运作原理大概又是怎样的呢?
  1. if "%1"=="ray" goto s
  2. start "" "%~0" ray
复制代码

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

回复 4# raymai97


    多谢大人,学习到了好东西。

TOP

返回列表