Board logo

标题: 怎么自动关闭命令行窗口 [打印本页]

作者: cr2516     时间: 2006-7-20 13:25    标题: 怎么自动关闭命令行窗口

脚本运行完毕后   怎么可以让命令行窗口自动关闭
作者: flying008     时间: 2006-7-20 13:30
呵呵……在批处理文件 的最后一句写上EXIT就行了,
echo off
start d:\123\456.exe 如果运行WINDOWS程序的话,用START命令来启动就不等了
exit  批处理脚本运行完毕后命令行窗口自动关闭
作者: cr2516     时间: 2006-7-20 13:35
不行呀   我一运行脚本   程序和命令行窗口就都弹出来了
作者: cr2516     时间: 2006-7-20 13:38
我的意思是手动运行脚本  显示程序  但是不形式命令行窗口  我试了  加exit不起作用
作者: namejm     时间: 2006-7-20 13:49
  “但是不形式命令行窗口”这句话如何理解?如果自己都描述不清楚,如何让别人解答?
作者: cr2516     时间: 2006-7-20 13:55
一个运行播放器的脚本   点击之后  播放器运行同时显示命令行窗口     可以运行程序的同时不显示命令行窗口吗?
作者: fastslz     时间: 2006-7-20 14:26
把脚本贴出来呀
作者: cr2516     时间: 2006-7-20 14:34
1.bat

d:
cd D:\Program Files\Ringz Studio\Storm Codec
mplayerc.exe -play -add D:\TDdownload\1.asf

每次双击运行1.bat就播放器和命令行窗口都弹出来了
作者: cr2516     时间: 2006-7-20 14:35
我的系统是XP的
作者: namejm     时间: 2006-7-20 14:52
  原来是暴风影音啊,本人机子上没装,也不想装,听说插件N多。

  这是因为调用了暴风影音来打开一个影音文件,导致要关闭暴风影音之后,CMD窗口才会退出。如果不用自动打开某个影音文件的话,把mplayerc.exe -play -add D:\TDdownload\1.asf改成 start mplayerc.exe ,则启动暴风影音后CMD窗口能退出,然后手动打开指定影音文件。
作者: cr2516     时间: 2006-7-20 15:15
高人呀   我在mplayerc.exe -play -add D:\TDdownload\1.asf 前面加上start  就可以了   谢谢了  我想知道为什么加上start  再点击运行的时候就不会显示命令行窗口了
作者: namejm     时间: 2006-7-20 15:31
  这个具体是什么原因,我也说不清楚,按照我的习惯,如果调用的是外部程序,不想等待外部程序退出就执行下一步操作的话,就在前边加 start。

  期待高人作理论上的深入剖析。呵呵。
作者: cr2516     时间: 2006-7-20 16:53
hehe   还是一样十分感谢
作者: zh159     时间: 2006-7-20 17:18
start: 启动另一个窗口运行指定的程序或命令。
当前窗口的批处理继续运行,不必等待另一个窗口运行完毕
作者: Scott0902     时间: 2006-7-20 18:53
如果是调用暴风影音打开视频的话,用不着用批处理啊,创建一个快捷方式不就省事了?这个快捷方式只需一条命令:"D:\Program Files\Ringz Studio\Storm Codec\mplayerc.exe" -play -add D:\TDdownload\1.asf
作者: flying008     时间: 2006-7-21 09:06
偶想用批处理调用一个程序adobe reader 7.0,这是看PDF文档的软件,相信很多人用到,路径是"D:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe",现在想用批处理文件启动这个程序后,批处理窗口自动关闭,而 adobe reader 7.0还在运行。偶只能做到批处理启动这个程序,但窗口不能自动 关闭,只要程序还在运行,命令行窗口就还存在,哪位可以实现启动这个程序后自动关闭命令行窗口这样的功能?
注意:要试验后才能发言哟……谢谢……
作者: namejm     时间: 2006-7-21 10:27
  楼上的,把你的代码贴出来看看再说。
作者: flying008     时间: 2006-7-21 10:37
=======

@echo off
"D:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"
exit

=======
还只有这样才能在批处理中启动程序,其它如START或不要引号等方式都不行。请namejm指教……谢谢……
作者: flying008     时间: 2006-7-21 10:38
声明……由于某种原因,最好不用cd /d 或pushd popd这切换当前目录的方式的,
作者: zh159     时间: 2006-7-21 11:30
先设置可执行文件的搜索路径再 start。

%ProgramFiles%=系统盘的 Program Files 目录

  Quote:
@echo off
path=%path%;%ProgramFiles%\Adobe\Acrobat 6.0\Reader\
start AcroRd32.exe
exit

[ Last edited by zxcv on 2006-7-21 at 13:11 ]
作者: flying008     时间: 2006-7-21 12:57
20楼的解法甚是OK,呵呵……
顺便弱弱的问一句,这个PATH设置的路径只对一行start语句有效吧?因为偶在start AcroRd32.exe的下面加了一句 start ABC.exe[这个ABC是批处理的当前目录下的程序],同样也运行起来了……就是说PATH设置的路径不会影响从第一个START开始的第二行和以下的语句吧?
thanks

[ Last edited by flying008 on 2006-7-21 at 13:01 ]
作者: zh159     时间: 2006-7-21 13:11
不会
path只是指明可以到该路径内搜索要执行的文件

更改一下不影响系统默认的设置路径

path=%path%;%ProgramFiles%\Adobe\Acrobat 6.0\Reader\

否则系统原来默认的设置路径里的软件有可能无法执行

[ Last edited by zxcv on 2006-7-21 at 13:14 ]
作者: namejm     时间: 2006-7-21 13:33
  path=%path%;%ProgramFiles%\Adobe\Acrobat 6.0\Reader\一句中,用%path%保留了原来默认的搜索路径,所以对直接运行ABC.exe没什么影响,如果去掉%path%,嘿嘿,那你就老老实实地把ABC.exe的绝对路径给添上吧。

  除了用设置搜索路径的办法外,还可以直接用start命令来运行,不过要稍作改动,因为AcroRd32.exe的路径中带了空格符号:start "AcroRd32.exe程序的标题" “AcroRd32.exe的路径”

[ Last edited by namejm on 2006-7-21 at 13:34 ]
作者: flying008     时间: 2006-7-21 13:57
你好……namejm
可是这个程序AcroRd32.exe用下面的语句
@echo
start "D:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"
exit
就是不能启动,偶用START加引号试了N次了,
作者: namejm     时间: 2006-7-21 14:05
  要用start "AcroRd32.exe的标题" "D:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe",你写对了吗?
作者: zh159     时间: 2006-7-21 14:10
按照 namejm 的思路试了试:

  Quote:
@echo off
start "" "%ProgramFiles%\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"
exit

也可以,其中第一个 "" 为 start 标题引号,可以不用写内容
作者: fastslz     时间: 2006-7-21 14:16
对已安装的软件可以忽略路径
@echo off
start AcroRd32
exit
就行了
作者: flying008     时间: 2006-7-21 15:30


  Quote:
Originally posted by namejm at 2006-7-21 14:05:
  要用start "AcroRd32.exe的标题" "D:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe",你写对了吗?

为什么一定要]"AcroRd32.exe的标题"???偶就是没有写这个,
作者: namejm     时间: 2006-7-21 15:33
  “对已安装的软件可以忽略路径”?fastslz你不是在开玩笑吧?反正我把bat文件放在桌面上然后start安装在其他分区的某个程序,从来就没有成功过。

Re zxcv:
  
  呵呵,想不到 start "" "程序路径" 这样的格式也可以,多谢提醒,又长了点知识:)
作者: zh159     时间: 2006-7-21 15:46


  Quote:
Originally posted by fastslz at 2006-7-21 14:16:
对已安装的软件可以忽略路径
@echo off
start AcroRd32
exit
就行了

KAO,还真是
不过只能是一部分正确安装并在注册表注册了的才行,我试了正常安装的、AutoCAD可以

  Quote:
Originally posted by namejm at 2006-7-21 15:33:
  Re zxcv:
  
  呵呵,想不到 start "" "程序路径" 这样的格式也可以,多谢提醒,又长了点知识:)

其实也是定义了标题的,只不过标题为空而已

[ Last edited by zxcv on 2006-7-21 at 15:48 ]
作者: fastslz     时间: 2006-7-21 16:11


  Quote:
Originally posted by zxcv at 2006-7-21 15:46:

不过只能是一部分正确安装并在注册表注册了的才行,我试了正常安装的、AutoCAD可以

是的绝大部分已安装的软件都能start,特别国外或是大性软件公司的。简单列出几个常用的
start realplay
start ACDSee7
start mplayerc
start winrar
start kav
start QuickTimePlayer
start nero
start uedit32
start Office系列....
start Microsoft所有组件....
聊天工具就QQ不行

[ Last edited by fastslz on 2006-7-21 at 16:12 ]
作者: zh159     时间: 2006-7-21 16:30
关键就是:要用正常的安装方式安装后再在注册表注册了的
作者: yanzhong     时间: 2006-9-4 06:52
exit?
作者: xuantian     时间: 2006-9-4 07:30
用快捷方式呀^.^
作者: HUNRYBECKY     时间: 2006-12-29 10:05


  Quote:
Originally posted by namejm at 2006-7-21 15:33:
  “对已安装的软件可以忽略路径”?fastslz你不是在开玩笑吧?反正我把bat文件放在桌面上然后start安装在其他分区的某个程序,从来就没有成功迠...

namejm斑竹,其实start 的确可以忽略很多路径,而且还可以启动某个目录,如
start system32那么就会直接打开WINDOWS的system32目录。

关于START忽略路径的可以在注册表中设置,注册表中可以忽略路径的命令全部储存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths下面,你甚至可以直接使用BAT添加需要可以忽略路径的程序。如下面我添加一个可以启动ACCESS 2000 RUNTIME的MSACCESS.EXE程序,为了不与原来的MSACESS.EXE程序冲突,我改为可以在命令中输入START ACCESS2K.EXE来启动应用程序
ECHO HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ACCESS2K.EXE] >TMP.REG
ECHO @="D:\\Access2KRT\\Office\\MSACCESS.EXE">>TMP.REG
ECHO "Path"="D:\\Access2KRT\\Office\\">>TMP.REG
ECHO "useURL"="1>>TMP.REG
REGEDIT /S TMP.REG
DEL TMP.REG /Q/F

作者: scriptor     时间: 2006-12-29 11:59

@echo off
cd "要运行的程序的路径"
start /min 名称
exit


比如:
路径为  d:\program files\
名称为  wmplayer.exe

记得加双引号


[ Last edited by scriptor on 2006-12-28 at 11:21 PM ]
作者: hxuan999     时间: 2006-12-29 12:31
用%PATH%来找文件的确是不错的。呵,还可以这样用执行文件的查找路径.
@echo off
SET PH=%ProgramFiles%\Adobe\Acrobat 7.0\Reader\
FOR %%I IN (AcroRd32.exe) DO start "" "%%~$PH:I"
exit
在PH中可以像PATH一样用;分隔多个路径.
作者: hxuan999     时间: 2006-12-29 12:37
另外想到有两个题没人回答那我答一下吧,呵.
1,是为什么用START就可以自动的关闭CMD窗口.
2,是为什么一定要用start "AcroRd32.exe的标题" "D:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"才能执行.

第一个是因为,如果是内部的CMD命令,或是批文件的化默认是以CMD /K来运行的,/K也是就是运行程序并保持窗口.
第二个是因为,加了引号的路径被认成了是标题的字符串了,所以不就是没有路径了,也就出错了.要是你写成了,
start "D:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe" AA
那就会提示你文件AA找不到呀.

[ Last edited by hxuan999 on 2006-12-29 at 07:53 PM ]
作者: hxuan999     时间: 2006-12-31 07:25
再加一贴,
[求助奇怪问题]START调用内部命令时如何实现延迟
作者: szww     时间: 2007-3-23 05:51
联盟中联盟的人太多!不是我笨!
作者: SunRiseBoy     时间: 2007-6-29 02:43
start经典问题,都遇到过。