【原】[一日一教学]批处理系列帖子索引 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 提供)。 |