【原】[一日一教学]批处理系列帖子索引 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。COPY |
命令概括:
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"COPY |
这里我先用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 | | pauseCOPY |
F:\音乐软件\Kugou7\kugou7.exe改成你对应的音乐软件路劲;
运行bat之后,显示 hello,运行酷狗7播放音乐,如果不结束酷狗7,world就不会被显示出来,一结束酷狗7的进程,world就显示;
之所以出现这种现象,都是/wait参数搞的鬼;
wait参数就是等待 start 启动的程序结束,再执行start命令的下一条语句。
3.打开文件夹
命令行中打开: | @echo off | | start "" /d "c:\" | | pauseCOPY |
这个bat基本等同于 | @echo off | | cmd /k "cd /d c:\" | | pauseCOPY |
实际打开(弹出文件夹): | @echo off | | md hello1 | | start "" "hello1\" | | pauseCOPY |
::创建hello1文件夹,并打开
4.运行命令 | @echo off | | start /max dir /b | | pauseCOPY |
xp的朋友全屏了,win7的朋友半屏了(win7是由于微软在这个系统中限制了cmd的全屏才会如此);
会有两个窗口,第一个旧cmd,另一个是新cmd(由start创建),新cmd执行了dir /b命令。
/max 最大化运行cmd(对其它应用程序无效),/min 最小化运行cmd。
16位、程序优先级之类的参数由于不常用,这里不再讲解,有兴趣的朋友可以自行研究。
【举例】
指定一个标题start "我是标题" "C:\Windows\System32\cmd.exe"COPY 指定一个空的标题start "" "C:\Windows\System32\cmd.exe"COPY 不指定标题start "C:\Windows\System32\cmd.exe"COPY 路径中包含空格等特殊字符的时候需要指定一个空的标题start "" "C:\Program Files\Internet Explorer\iexplore.exe"COPY 扩展阅读:
1.start. (start命令后跟一点):打开命令提示符所处的当前路径。(感谢yyykkkyyyy 提供)。 |