西西每天打開(kāi)電腦的第一件事就打開(kāi)工作中需要的幾個(gè)應(yīng)用程序,想到批量處理的好處,就到好友曹導(dǎo)師哪里問(wèn)來(lái)了代碼:
@echo off
title 工作環(huán)境初如化
start E:\extraicochs.exe
start "C:\Program Files\VMware\VMware Workstation\vmware.exe"
start "C:\Program Files\360\360se3\360se.exe"
start "E:\Snagit 9\Snagit32.exe"
保存為工作環(huán)境初如化.bat,執(zhí)行這個(gè)批處理,結(jié)果第一個(gè)打開(kāi)了。后面幾個(gè)就出錯(cuò)了:
結(jié)果,第一個(gè)extraicochs.exe打開(kāi)了,后面幾個(gè)就沒(méi)有打開(kāi)了,并出現(xiàn)上面的窗口。
西西總結(jié):路徑中不包含空格,可以執(zhí)行,路徑包含空格,無(wú)法執(zhí)行,包括加引號(hào)也一樣。
那么,如何解決Start開(kāi)啟路徑帶空格的程序呢?
西西百度了一下,找到了解決方案:
原來(lái)是雙引號(hào)代表設(shè)置標(biāo)題,導(dǎo)致我這出現(xiàn)的問(wèn)題,解決辦法很簡(jiǎn)單,在Start后增加2個(gè)雙引號(hào)即可。
start "" "C:\Program Files\VMware\VMware Workstation\vmware.exe"通過(guò)這個(gè)簡(jiǎn)單的方式,就可以解決Start無(wú)法執(zhí)行路徑包含空格的問(wèn)題了。
西西附上start命令可以正常打開(kāi)文件的代碼:
@echo off
title 工作環(huán)境初如化
start E:\extraicochs.exe
start "" "C:\Program Files\VMware\VMware Workstation\vmware.exe"
start "" "C:\Program Files\360\360se3\360se.exe"
start "" "E:\Snagit 9\Snagit32.exe"
最后再附上這個(gè)命令自帶的幫助:
C:\Users\Administrator>start /?
啟動(dòng)另一個(gè)窗口運(yùn)行指定的程序或命令。
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/AFFINITY
[parameters]
"title" 在窗口標(biāo)題欄中顯示的標(biāo)題。
path 啟動(dòng)目錄
B 啟動(dòng)應(yīng)用程序,但不創(chuàng)建新窗口。應(yīng)用程序已忽略 ^C 處理。除非應(yīng)用程序啟用 ^C 處理,否則 ^Break 是唯一可以中斷該應(yīng)用程序的方式
I 新的環(huán)境將成為傳遞給 cmd.exe 的原始環(huán)境,而不是當(dāng)前環(huán)境。
MIN 以最小化方式啟動(dòng)窗口
MAX 以最大化方式啟動(dòng)窗口
SEPARATE 在單獨(dú)的內(nèi)存空間中啟動(dòng) 16 位 Windows 程序
SHARED 在共享內(nèi)存空間中啟動(dòng) 16 位 Windows 程序
LOW 在 IDLE 優(yōu)先級(jí)類中啟動(dòng)應(yīng)用程序
NORMAL 在 NORMAL 優(yōu)先級(jí)類中啟動(dòng)應(yīng)用程序
HIGH 在 HIGH 優(yōu)先級(jí)類中啟動(dòng)應(yīng)用程序
REALTIME 在 REALTIME 優(yōu)先級(jí)類中啟動(dòng)應(yīng)用程序
ABOVENORMAL 在 ABOVENORMAL 優(yōu)先級(jí)類中啟動(dòng)應(yīng)用程序
BELOWNORMAL 在 BELOWNORMAL 優(yōu)先級(jí)類中啟動(dòng)應(yīng)用程序
AFFINITY 新應(yīng)用程序?qū)⒕哂兄付ǖ奶幚砥麝P(guān)聯(lián)掩碼,用一個(gè)十六進(jìn)制數(shù)字表示。
WAIT 啟動(dòng)應(yīng)用程序并等待它終止
command/program
如果它是內(nèi)部 cmd 命令或批文件,那么該命令處理器是使用 cmd.exe 的 /K 開(kāi)關(guān)運(yùn)行的。
這意味著運(yùn)行該命令之后,該窗口將仍然存在。
如果它不是內(nèi)部 cmd 命令或批文件,那么它就是一個(gè)程序,并將作為一個(gè)窗口化應(yīng)用程序或控制臺(tái)應(yīng)用程序運(yùn)行。
parameters 這些是傳遞給 command/program 的參數(shù)
注意: 在 64 位平臺(tái)上不支持 SEPERATE 和 SHARED 選項(xiàng)。
如果命令擴(kuò)展被啟用,通過(guò)命令行或 START 命令的外部命令調(diào)用會(huì)如下改變:
將文件名作為命令鍵入,非可執(zhí)行文件可以通過(guò)文件關(guān)聯(lián)調(diào)用。(例如,WORD.DOC 會(huì)調(diào)用跟 .DOC 文件擴(kuò)展名關(guān)聯(lián)的應(yīng)用程序)。關(guān)于如何從命令腳本內(nèi)部創(chuàng)建這些關(guān)聯(lián),請(qǐng)參閱 ASSOC 和FTYPE 命令。
執(zhí)行的應(yīng)用程序是 32-位 GUI 應(yīng)用程序時(shí),CMD.EXE 不等應(yīng)用程序終止就返回命令提示符。如果在命令腳本內(nèi)執(zhí)行,該新行為則不會(huì)發(fā)生。
如果執(zhí)行的命令行的第一個(gè)符號(hào)是不帶擴(kuò)展名或路徑修飾符的字符串 "CMD","CMD" 會(huì)被 COMSPEC 變量的數(shù)值所替換。這防止從當(dāng)前目錄提取 CMD.EXE。
如果執(zhí)行的命令行的第一個(gè)符號(hào)沒(méi)有擴(kuò)展名,CMD.EXE 會(huì)使用PATHEXT 環(huán)境變量的數(shù)值來(lái)決定要以什么順序?qū)ふ夷男⿺U(kuò)展名。PATHEXT 變量的默認(rèn)值是:
.COM;.EXE;.BAT;.CMD
請(qǐng)注意,該語(yǔ)法跟 PATH 變量的一樣,分號(hào)隔開(kāi)不同的元素。
查找可執(zhí)行文件時(shí),如果沒(méi)有相配的擴(kuò)展名,看一看該名稱是否與目錄名相配。如果確實(shí)如此,START 會(huì)在那個(gè)路徑上調(diào)用Explorer。如果從命令行執(zhí)行,則等同于對(duì)那個(gè)路徑作 CD /D。