[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] 【续】[一日一教学](32)打开文件、运行程序:start

【原】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-2576-1-1.html
【续】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-13798-1-1.html


帮助信息:
  1. 启动一个单独的窗口运行指定的程序或命令。
  2. START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
  3.       [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
  4.       [/AFFINITY <hex affinity>] [/WAIT] [/B] [command/program]
  5.       [parameters]
  6.     "title"     在窗口标题栏中显示的标题。
  7.     path        启动目录。
  8.     B           启动应用程序,但不创建新窗口。应用程序已
  9.                 忽略 ^C 处理。除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断
  10.                 该应用程序的方式。
  11.     I           新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境。
  12.     MIN         以最小化方式启动窗口。
  13.     MAX         以最大化方式启动窗口。
  14.     SEPARATE    在单独的内存空间中启动 16 位 Windows 程序。
  15.     SHARED      在共享内存空间中启动 16 位 Windows 程序。
  16.     LOW         在 IDLE 优先级类中启动应用程序。
  17.     NORMAL      在 NORMAL 优先级类中启动应用程序。
  18.     HIGH        在 HIGH 优先级类中启动应用程序。
  19.     REALTIME    在 REALTIME 优先级类中启动应用程序。
  20.     ABOVENORMAL 在 ABOVENORMAL 优先级类中启动应用程序。
  21.     BELOWNORMAL 在 BELOWNORMAL 优先级类中启动应用程序。
  22.     AFFINITY    新应用程序将具有指定的处理器关联掩码,用十六进制数字表示。
  23.     WAIT        启动应用程序并等待它终止。
  24.     command/program
  25.                 如果它是内部 cmd 命令或批文件,则该命令处理器是使用 cmd.exe
  26.                 的 /K 开关运行的。
  27.                 这表示运行该命令之后,该窗口将仍然存在。
  28.                 如果它不是内部 cmd 命令或批文件,则它就是一个程序,并将作为
  29.                 一个窗口化应用程序或控制台应用程序运行。
  30.     parameters  这些是传递给 command/program 的参数。
  31. 注意: 在 64 位平台上不支持 SEPARATE 和 SHARED 选项。
  32. 如果命令扩展被启用,通过命令行或 START 命令的外部命令
  33. 调用会如下改变:
  34. 将文件名作为命令键入,非可执行文件可以通过文件关联调用。
  35.     (例如,WORD.DOC 会调用跟 .DOC 文件扩展名关联的应用程序)。
  36.     关于如何从命令脚本内部创建这些关联,请参阅 ASSOC 和
  37.      FTYPE 命令。
  38. 执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用
  39.     程序终止就返回命令提示符。如果在命令脚本内执行,该新行为
  40.     则不会发生。
  41. 如果执行的命令行的第一个符号是不带扩展名或路径修饰符的
  42.     字符串 "CMD","CMD" 会被 COMSPEC 变量的数值所替换。这
  43.     防止从当前目录提取 CMD.EXE。
  44. 如果执行的命令行的第一个符号没有扩展名,CMD.EXE 会使用
  45.     PATHEXT 环境变量的数值来决定要以什么顺序寻找哪些扩展
  46.     名。PATHEXT 变量的默认值是:
  47.         .COM;.EXE;.BAT;.CMD
  48.     请注意,该语法跟 PATH 变量的一样,分号隔开不同的元素。
  49. 查找可执行文件时,如果没有相配的扩展名,看一看该名称是否
  50. 与目录名相配。如果确实如此,START 会在那个路径上调用
  51. Explorer。如果从命令行执行,则等同于对那个路径作 CD /D。
复制代码
命令概括:
start,意为“开始,启动”;
title,意为“标题”;
/d,全英文directory,意为“目录”;(经常出现的参数——以后的教程中,一些在多个命令经常出现的的参数就不再翻译了)
/min,全英文minimum,意为“最小化”;
/max,全英文maximum,意为“最大化”;
/wait,意为“等待”;
/b,(未知);
command/program,意为“命令行/程序”
parameters,意为“参数”;

nj将start描述成“打开文件、运行程序”是很形象的一种说法,不过start可不仅仅是“打开文件、运行程序”,它还能“打开文件夹、运行命令(可以带参数)”!



参数详解:
在进行参数详解之前,我希望新手要牢记以下语法,且不要偷懒使用简写的方法,一直的使用这种语法:
start "" "程序名/文件夹名/文件名"


下面进行参数详解。

1.打开文件。
  1. @echo off
  2. echo hello>"c:\hello world.txt"
  3. start "" "c:\hello world.txt"
复制代码
这里我先用echo创建,再用start打开。
start "" "c:\hello world.txt"


第一个引号就是title(标题),这里title(标题)的值是空;

第二个引号中是文件的完全路径,为什么要加引号呢?(为有空格的路径加上英文双引号——老生常谈的东西了)

这也是为什么我在一开始就强调要用
start "" "程序名/文件夹名/文件名"

这种语法的原因(避免考虑太多的因素,只要这么写就错不了);

类似于,遇到要结束进程就写 taskkill /f /t /im 进程名 ,这样就准错不了,虽然要多敲几个字符。

taskkill /f /t /im qq.exe

加上/t参数,对付有子进程的程序(qq.exe有子进程txplatform.exe,不加/t参数txplatform.exe会滞留内存、浪费内存空间)。

qq还好说话,对于那些有子进程保驾护航的软件,你不加/t参数就结束不了进程。

2.运行程序。
  1. @echo off
  2. echo hello
  3. start /wait "" "F:\音乐软件\Kugou7\kugou7.exe"
  4. echo world
  5. pause
复制代码
F:\音乐软件\Kugou7\kugou7.exe改成你对应的音乐软件路劲;

运行bat之后,显示 hello,运行酷狗7播放音乐,如果不结束酷狗7,world就不会被显示出来,一结束酷狗7的进程,world就显示;

之所以出现这种现象,都是/wait参数搞的鬼;

wait参数就是等待 start 启动的程序结束,再执行start命令的下一条语句。

3.打开文件夹

命令行中打开:
  1. @echo off
  2. start "" /d  "c:\"
  3. pause
复制代码
这个bat基本等同于
  1. @echo off
  2. cmd /k "cd /d c:\"
  3. pause
复制代码
实际打开(弹出文件夹):
  1. @echo off
  2. md hello1
  3. start "" "hello1\"
  4. pause
复制代码
::创建hello1文件夹,并打开

4.运行命令
  1. @echo off
  2. start  /max dir /b
  3. pause
复制代码
xp的朋友全屏了,win7的朋友半屏了(win7是由于微软在这个系统中限制了cmd的全屏才会如此);

会有两个窗口,第一个旧cmd,另一个是新cmd(由start创建),新cmd执行了dir /b命令。

/max 最大化运行cmd(对其它应用程序无效),/min 最小化运行cmd。

16位、程序优先级之类的参数由于不常用,这里不再讲解,有兴趣的朋友可以自行研究。

【举例】

指定一个标题
  1. start "我是标题" "C:\Windows\System32\cmd.exe"
复制代码
指定一个空的标题
  1. start "" "C:\Windows\System32\cmd.exe"
复制代码
不指定标题
  1. start "C:\Windows\System32\cmd.exe"
复制代码
路径中包含空格等特殊字符的时候需要指定一个空的标题
  1. start "" "C:\Program Files\Internet Explorer\iexplore.exe"
复制代码
扩展阅读:
1.start.  (start命令后跟一点):打开命令提示符所处的当前路径。(感谢yyykkkyyyy 提供)。

回复 4# cjiabing


    start  /b 我一直没搞懂,有什么用,怎么用?

TOP

返回列表