[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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 提供)。

不错,学习了。。

TOP

我经常在命令行输入这条命令(只加一点):  start.
1

评分人数

TOP

最重要的“Start /b”没讲呢!~
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 4# cjiabing


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

TOP

晕,那天不是在群里谈论了吗?你找记录。
说简单点是多线程,多线程的意义就是可以同时处理多个任务,手机不好发例子。
批处理倒计时与按任意键终止
http://www.bathome.net/viewthread.php?tid=11994&highlight=
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

很不错啊。以后的好好学习了
行公义,好怜悯,存谦卑的心...

TOP

不错,学习了。。

TOP

今天学习了一会儿,又有了一点心得体会,嗯,批处理,挺好的,强大!

TOP

晕,那天不是在群里谈论了吗?你找记录。
说简单点是多线程,多线程的意义就是可以同时处理多个任务,手机 ...
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

TOP

回复 10# zh_1452


    提问请到求助和咨询版块
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

cjiabing
直接回答不就完了嘛
这个版主不会呀

TOP

回复 12# zh_1452


    本版规则1、本版块以批处理教程(BAT CMD DOS)和各种相关资料为主,求代码、求解释等各类咨询帖请发往 代码咨询&讨论 版块;
2、转帖的教程及资料,请在显著位置标明作者及详细出处,以示对原作者辛勤劳动的尊敬;切不可对转载事实只字不提,从而导致其他人误以为楼主就是原作者;
3、严禁跟纯顶、纯支持、纯路过、纯感谢的帖子,此类回帖一律删除!
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

本帖最后由 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参数将会被忽略。

TOP

回复 1# Hello123World


    关于title参数,好像在特定情况下start "" 1.exe能运行,而start 1.exe无法运行,请问能再说说哪些情况必须使用title参数吗?

TOP

返回列表