标题: [已解决]批处理如何在新CMD窗口中执行命令? [打印本页]
作者: wolfan 时间: 2011-8-20 12:51 标题: [已解决]批处理如何在新CMD窗口中执行命令?
本帖最后由 wolfan 于 2011-8-20 22:56 编辑
如何在一个新CMD窗口中执行相关命令,一定时间后自动关闭。- 1.bat
- start cmd ?????? <--- 不知如何在这启动:S
-
- call :s <------- 这个:S 在新窗口中执行。
- :s
- echo yes.
- ping 127.1 -n 5 >nul
- echo no.
- color 12
- goto home <----- 这个HOME是在1.BAT中
复制代码
作者: raymai97 时间: 2011-8-20 13:30
我写了2个给你参考参考~
不显示新窗口:- @Echo off
- if "%1"=="ray" goto s
- call "%~0" ray
- echo Home here.
- pause>nul
- exit
- :s
- echo yes.
- ping -n 2 127.1>nul
- echo no.
- color f0
- exit /b
复制代码
显示新窗口:- @echo off
- if "%1"=="ray" goto s
- start "" "%~0" ray
- echo Home here.
- pause>nul
- exit
- :s
- echo yes.
- ping -n 2 127.1>nul
- echo no.
- color f0
- exit
复制代码
作者: wolfan 时间: 2011-8-20 22:54
回复 2# raymai97
多谢IN~ 、
那个,请问,这个的核心是那部份,运作原理大概又是怎样的呢?- if "%1"=="ray" goto s
-
- start "" "%~0" ray
复制代码
作者: raymai97 时间: 2011-8-21 08:56
回复 3# wolfan - if "%1"=="ray" goto s
- 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它自己。
明白么?
再附上一个代码- @echo off
- if "%1"=="abc" goto abc
- start "" %0 abc
- echo 我是第一个窗口
- pause>nul
- exit
- :abc
- echo 我是第二个窗口
- echo.
- echo 由第一个窗口用start "" "%0 abc打开的
- pause>nul
- exit
复制代码
作者: wolfan 时间: 2011-8-21 16:56
回复 4# raymai97
多谢大人,学习到了好东西。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |