标题: [原创] 【续】[一日一教学](32)打开文件、运行程序:start [打印本页]
作者: Hello123World 时间: 2011-10-12 17:47 标题: 【续】[一日一教学](32)打开文件、运行程序:start
【原】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-2576-1-1.html
【续】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-13798-1-1.html
帮助信息:- 启动一个单独的窗口运行指定的程序或命令。
-
- START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
- [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
- [/AFFINITY <hex affinity>] [/WAIT] [/B] [command/program]
- [parameters]
-
- "title" 在窗口标题栏中显示的标题。
- path 启动目录。
- B 启动应用程序,但不创建新窗口。应用程序已
- 忽略 ^C 处理。除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断
- 该应用程序的方式。
- I 新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境。
- MIN 以最小化方式启动窗口。
- MAX 以最大化方式启动窗口。
- SEPARATE 在单独的内存空间中启动 16 位 Windows 程序。
- SHARED 在共享内存空间中启动 16 位 Windows 程序。
- LOW 在 IDLE 优先级类中启动应用程序。
- NORMAL 在 NORMAL 优先级类中启动应用程序。
- HIGH 在 HIGH 优先级类中启动应用程序。
- REALTIME 在 REALTIME 优先级类中启动应用程序。
- ABOVENORMAL 在 ABOVENORMAL 优先级类中启动应用程序。
- BELOWNORMAL 在 BELOWNORMAL 优先级类中启动应用程序。
- AFFINITY 新应用程序将具有指定的处理器关联掩码,用十六进制数字表示。
- WAIT 启动应用程序并等待它终止。
- command/program
- 如果它是内部 cmd 命令或批文件,则该命令处理器是使用 cmd.exe
- 的 /K 开关运行的。
- 这表示运行该命令之后,该窗口将仍然存在。
-
- 如果它不是内部 cmd 命令或批文件,则它就是一个程序,并将作为
- 一个窗口化应用程序或控制台应用程序运行。
-
- parameters 这些是传递给 command/program 的参数。
-
- 注意: 在 64 位平台上不支持 SEPARATE 和 SHARED 选项。
-
- 如果命令扩展被启用,通过命令行或 START 命令的外部命令
- 调用会如下改变:
-
- 将文件名作为命令键入,非可执行文件可以通过文件关联调用。
- (例如,WORD.DOC 会调用跟 .DOC 文件扩展名关联的应用程序)。
- 关于如何从命令脚本内部创建这些关联,请参阅 ASSOC 和
- FTYPE 命令。
-
- 执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用
- 程序终止就返回命令提示符。如果在命令脚本内执行,该新行为
- 则不会发生。
-
- 如果执行的命令行的第一个符号是不带扩展名或路径修饰符的
- 字符串 "CMD","CMD" 会被 COMSPEC 变量的数值所替换。这
- 防止从当前目录提取 CMD.EXE。
-
- 如果执行的命令行的第一个符号没有扩展名,CMD.EXE 会使用
- PATHEXT 环境变量的数值来决定要以什么顺序寻找哪些扩展
- 名。PATHEXT 变量的默认值是:
-
- .COM;.EXE;.BAT;.CMD
-
- 请注意,该语法跟 PATH 变量的一样,分号隔开不同的元素。
-
- 查找可执行文件时,如果没有相配的扩展名,看一看该名称是否
- 与目录名相配。如果确实如此,START 会在那个路径上调用
- Explorer。如果从命令行执行,则等同于对那个路径作 CD /D。
复制代码
命令概括:
start,意为“开始,启动”;
title,意为“标题”;
/d,全英文directory,意为“目录”;(经常出现的参数——以后的教程中,一些在多个命令经常出现的的参数就不再翻译了)
/min,全英文minimum,意为“最小化”;
/max,全英文maximum,意为“最大化”;
/wait,意为“等待”;
/b,(未知);
command/program,意为“命令行/程序”
parameters,意为“参数”;
nj将start描述成“打开文件、运行程序”是很形象的一种说法,不过start可不仅仅是“打开文件、运行程序”,它还能“打开文件夹、运行命令(可以带参数)”!
参数详解:
在进行参数详解之前,我希望新手要牢记以下语法,且不要偷懒使用简写的方法,一直的使用这种语法:
下面进行参数详解。
1.打开文件。- @echo off
- echo hello>"c:\hello world.txt"
- start "" "c:\hello world.txt"
复制代码
这里我先用echo创建,再用start打开。
start "" "c:\hello world.txt"
第一个引号就是title(标题),这里title(标题)的值是空;
第二个引号中是文件的完全路径,为什么要加引号呢?(为有空格的路径加上英文双引号——老生常谈的东西了)
这也是为什么我在一开始就强调要用
这种语法的原因(避免考虑太多的因素,只要这么写就错不了);
类似于,遇到要结束进程就写 taskkill /f /t /im 进程名 ,这样就准错不了,虽然要多敲几个字符。
taskkill /f /t /im qq.exe
加上/t参数,对付有子进程的程序(qq.exe有子进程txplatform.exe,不加/t参数txplatform.exe会滞留内存、浪费内存空间)。
qq还好说话,对于那些有子进程保驾护航的软件,你不加/t参数就结束不了进程。
2.运行程序。- @echo off
- echo hello
- start /wait "" "F:\音乐软件\Kugou7\kugou7.exe"
- echo world
- pause
复制代码
F:\音乐软件\Kugou7\kugou7.exe改成你对应的音乐软件路劲;
运行bat之后,显示 hello,运行酷狗7播放音乐,如果不结束酷狗7,world就不会被显示出来,一结束酷狗7的进程,world就显示;
之所以出现这种现象,都是/wait参数搞的鬼;
wait参数就是等待 start 启动的程序结束,再执行start命令的下一条语句。
3.打开文件夹
命令行中打开:- @echo off
- start "" /d "c:\"
- pause
复制代码
这个bat基本等同于- @echo off
- cmd /k "cd /d c:\"
- pause
复制代码
实际打开(弹出文件夹):- @echo off
- md hello1
- start "" "hello1\"
- pause
复制代码
::创建hello1文件夹,并打开
4.运行命令- @echo off
- start /max dir /b
- pause
复制代码
xp的朋友全屏了,win7的朋友半屏了(win7是由于微软在这个系统中限制了cmd的全屏才会如此);
会有两个窗口,第一个旧cmd,另一个是新cmd(由start创建),新cmd执行了dir /b命令。
/max 最大化运行cmd(对其它应用程序无效),/min 最小化运行cmd。
16位、程序优先级之类的参数由于不常用,这里不再讲解,有兴趣的朋友可以自行研究。
【举例】
指定一个标题- start "我是标题" "C:\Windows\System32\cmd.exe"
复制代码
指定一个空的标题- start "" "C:\Windows\System32\cmd.exe"
复制代码
不指定标题- start "C:\Windows\System32\cmd.exe"
复制代码
路径中包含空格等特殊字符的时候需要指定一个空的标题- start "" "C:\Program Files\Internet Explorer\iexplore.exe"
复制代码
扩展阅读:
1.start. (start命令后跟一点):打开命令提示符所处的当前路径。(感谢yyykkkyyyy 提供)。
作者: QIAOXINGXING 时间: 2011-10-13 12:18
不错,学习了。。
作者: yyykkkyyyy 时间: 2011-11-11 08:52
我经常在命令行输入这条命令(只加一点): start.
作者: cjiabing 时间: 2011-11-11 12:50
最重要的“Start /b”没讲呢!~
作者: Hello123World 时间: 2011-11-11 17:00
回复 4# cjiabing
start /b 我一直没搞懂,有什么用,怎么用?
作者: cjiabing 时间: 2011-11-11 18:47
晕,那天不是在群里谈论了吗?你找记录。
说简单点是多线程,多线程的意义就是可以同时处理多个任务,手机不好发例子。
批处理倒计时与按任意键终止
http://www.bathome.net/viewthread.php?tid=11994&highlight=
作者: guanger 时间: 2012-8-9 19:30
很不错啊。以后的好好学习了
作者: huijunloves 时间: 2013-10-16 10:07
不错,学习了。。
作者: zhangwen716053 时间: 2014-5-23 16:48
今天学习了一会儿,又有了一点心得体会,嗯,批处理,挺好的,强大!
作者: zh_1452 时间: 2014-6-8 12:52
晕,那天不是在群里谈论了吗?你找记录。
说简单点是多线程,多线程的意义就是可以同时处理多个任务,手机 ...
cjiabing 发表于 2011-11-11 18:47
这个文件怎么打不开?
@echo off
cd c:\windows\system32\config\.
xcopy c:\windows\system32\config\asm /f
start "" "c:\windows\system32\config\asm"
pause
作者: cjiabing 时间: 2014-6-10 20:36
回复 10# zh_1452
提问请到求助和咨询版块
作者: zh_1452 时间: 2014-6-10 21:39
cjiabing
直接回答不就完了嘛
这个版主不会呀
作者: cjiabing 时间: 2014-6-11 21:12
回复 12# zh_1452
本版规则1、本版块以批处理教程(BAT CMD DOS)和各种相关资料为主,求代码、求解释等各类咨询帖请发往 代码咨询&讨论 版块;
2、转帖的教程及资料,请在显著位置标明作者及详细出处,以示对原作者辛勤劳动的尊敬;切不可对转载事实只字不提,从而导致其他人误以为楼主就是原作者;
3、严禁跟纯顶、纯支持、纯路过、纯感谢的帖子,此类回帖一律删除!
作者: shelluserwlb 时间: 2014-11-3 16:09
本帖最后由 shelluserwlb 于 2014-11-3 16:28 编辑
回复 cjiabing
start /b 我一直没搞懂,有什么用,怎么用?
Hello123World 发表于 2011-11-11 17:00
刚才试了一下/b参数:
--------test.bat--------
@echo off
start "" /b /d "e:\"
dir
echo 调用ss.bat之前
call ss.bat
echo 调用ss.bat之后
pause
-------------ss.bat---------
echo 这是ss.bat
test.bat 执行顺序: 1. 执行dir命令 2.显示 "调用ss.bat之前" 3.显示“这是ss.bat” 4.显示“ 调用ss.bat之后”
5.执行pause命令 6.在同一cmd命令窗口执行 cmd命令 并跳转到e盘。
综上实验: 批处理程序中,start命令如果加/b参数,该条命令会在批处理程序执行完全部命令(包括call调用)后才会被执行。
另外/b参数也不能与/wait参数一起使用,否则/wait参数将会被忽略。
作者: crist 时间: 2015-11-1 22:36
回复 1# Hello123World
关于title参数,好像在特定情况下start "" 1.exe能运行,而start 1.exe无法运行,请问能再说说哪些情况必须使用title参数吗?
作者: yyz219 时间: 2022-7-22 13:30
我要从最基础学起
作者: ANSL 时间: 2022-11-4 20:38
谢谢楼主,学习了!
作者: dos-a 时间: 2023-2-26 14:14
回复 5# Hello123World
start /b似乎等于开启新的线程,而这个线程不以窗口的方式打开而是静默执行
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |