<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
CALL從一個批次程式呼叫另一個批次程式,並且不終止父批次程式。call命令主要有2種用法,一種是呼叫其他批次程式(*.bat,*.exe,*.cmd,*.COM),目前常用的是*.exe檔案和*.bat檔案;另一種是CALL :label arguments
C:UsersAdministrator>help call
從批次程式呼叫另一個批次程式。
CALL [drive:][path]filename [batch-parameters]
batch-parameters 指定批次程式所需的命令列資訊。
如果命令擴充套件被啟用,CALL 會如下改變:
CALL 命令現在將卷標當作 CALL 的目標接受。語法是:
CALL:label arguments
一個新的批檔案上下文由指定的引數所建立,控制在卷標被指定後傳遞到語句。您必須通過達到批指令碼檔案末兩次來 "exit" 兩次。第一次讀到檔案末時,控制會回到 CALL 語句的緊後面。第二次會退出批指令碼。鍵入GOTO /?,參看 GOTO :EOF 擴充套件的描述,此描述允許您從一個批指令碼返回。
另外,批指令碼文字引數參照(%0、%1、等等)已如下改變:
批指令碼裡的 %* 指出所有的引數(如 %1 %2 %3 %4 %5 ...)
批引數(%n)的替代已被增強。您可以使用以下語法:
%~1 - 刪除引號("),擴充套件 %1
%~f1 - 將 %1 擴充套件到一個完全合格的路徑名
%~d1 - 僅將 %1 擴充套件到一個驅動器號
%~p1 - 僅將 %1 擴充套件到一個路徑
%~n1 - 僅將 %1 擴充套件到一個檔名
%~x1 - 僅將 %1 擴充套件到一個副檔名
%~s1 - 擴充套件的路徑只含有短名
%~a1 - 將 %1 擴充套件到檔案屬性
%~t1 - 將 %1 擴充套件到檔案的日期/時間
%~z1 - 將 %1 擴充套件到檔案的大小
%~$PATH:1 - 查詢列在 PATH 環境變數的目錄,並將 %1
擴充套件到找到的第一個完全合格的名稱。如果
環境變數名未被定義,或者沒有找到檔案,
此修改符會擴充套件到空字串
可以組合修改符來取得多重結果:
%~dp1 - 只將 %1 擴充套件到驅動器號和路徑
%~nx1 - 只將 %1 擴充套件到檔名和擴充套件名
%~dp$PATH:1 - 在列在 PATH 環境變數中的目錄裡查詢 %1,
並擴充套件到找到的第一個檔案的驅動器號和路徑。
%~ftza1 - 將 %1 擴充套件到類似 DIR 的輸出行。
在上面的例子中,%1 和 PATH 可以被其他有效數值替換。
%~ 語法被一個有效引數號碼終止。%~ 修定符不能跟 %* 使用
命令格式CALL [drive:][path]filename [batch-parameters]
建立檔案test.bat 呼叫檔案call.bat
@echo off set a=環境變數 call call.bat hi hello pause exit /b 0
::call.bat echo %1 echo %2 echo %a%
執行結果如下:
注意:
1、只在test.bat中使用命令@echo off,call.bat中也沒有回顯命令;
2、在test.bat中設定環境變數,call.bat中可使用該變數
注意:
1、呼叫標籤時需要“:”
2、呼叫標籤後繼續處理後面命令
範例一
@echo off call :interCall hi hello echo 下一步 pause exit /b 0 :intercall echo %1 echo %2
執行結果:
範例二
@echo off call :interCall echo 下一步 :intercall echo hi echo hello PAUSE exit /b 0
1、使用call 不終止父處理程序,不用call 呼叫批次處理後,父處理程序終止,不再處理後續命令
rem test.bat @echo off set a=環境變數 call call.bat hi hello echo 下一步 pause exit /b 0
rem call.bat echo %1 echo %2 echo %a% pause
2.2去掉call call.bat hi hello中的call執行結果如下:
幫助檔案如下
C:UsersAdministrator>help goto
將 cmd.exe 定向到批次程式中帶標籤的行。
GOTO label
label 指定批次程式中用作標籤的文字字串。
標籤必須單獨一行,並且以冒號打頭。如果命令擴充套件被啟用,GOTO 會如下改變:
GOTO 命令現在接受目標標籤 :EOF,這個標籤將控制轉移到當前批指令碼檔案的結尾。不定義就退出批指令碼檔案,這是一個容易的辦法。有關能使該功能有用的 CALL 命令的擴充套件描述,請鍵入CALL /?。
3.1 goto 後面不需要":",直接加label
3.2 goto 跳至指定label後,不會處理被跳過的命令語句
@echo off goto interCall echo 下一步 :intercall echo hi echo hello PAUSE exit /b 0
執行結果:並沒有處理“echo 下一步”該語句
C:UsersAdministrator>help start
啟動一個單獨的視窗執行指定的程式或命令。
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/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 優先順序類中啟動應用程式。
NODE 將首選非一致性記憶體結構 (NUMA) 節點指定為十進位制整數。
AFFINITY 將處理器關聯掩碼指定為十六進位制數位。程序被限制在這些
處理器上執行。
當 /AFFINITY 和 /NODE 結合時,會對關聯掩碼進行不同的解釋。
指定關聯掩碼,正如 NUMA 節點的處理器掩碼正確移動到零位
起始位置一樣。程序被限制在指定關聯掩碼和 NUMA 節點之間的
那些通用處理器上執行。如果沒有通用處理器,則程序被限制在
指定的 NUMA 節點上執行。
WAIT 啟動應用程式並等待它終止。
command/program
如果它是內部 cmd 命令或批檔案,則該命令處理器是使用
cmd.exe 的 /K 開關執行的。這表示執行該命令之後,該視窗
將仍然存在。
如果它不是內部 cmd 命令或批檔案,則它就是一個程式,並將
作為一個視窗化應用程式或控制檯應用程式執行。
parameters 這些是傳遞給 command/program 的引數。
注意: 在 64 位平臺上不支援 SEPARATE 和 SHARED 選項。
通過指定 /NODE,可按照利用 NUMA 系統中的記憶體區域的方式建立程序。例如,可以建立兩個完全通過共用記憶體互相通訊的程序以共用相同的首選 NUMA 節點,從而最大限度地減少記憶體延遲。如有可能,它們即會分配來自相同 NUMA 節點的記憶體,並且會在指定節點之外的處理器上自由執行。
啟動 /NODE 1 application1.exe
啟動 /NODE 1 application2.exe
這兩個程序可被進一步限制在相同 NUMA 節點內的指定處理器上執行。在以下範例中, application1 在節點的兩個低順序處理器上執行,而 application2在該節點的其後兩個處理器上執行。該範例假定指定節點至少具有四個邏輯處理器。請注意,節點號可更改為該計算機的任何有效節點號,而無需更改關聯掩碼。
啟動 /NODE 1 /AFFINITY 0x3 application1.exe
啟動 /NODE 1 /AFFINITY 0xc application2.exe
如果命令擴充套件被啟用,通過命令列或 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。
4.1 可以和 第2段“呼叫call 和不用call 的區別” 程式碼作對比
@echo off set a=環境變數 start call.bat hi hello echo 下一步 pause exit /b 0
call.bat內容如下
rem call.bat echo %1 echo %2 echo %a% pause
執行結果
call的語法如下
CALL [drive:][path] filename [batch-parameters]
其中引數: [Drive:][Path] FileName
就是指定要呼叫的批次程式的位置和名稱。
注意的是 filename 引數必須具有 .bat 或 .cmd 擴充套件名,
這樣程式才能被條用。
[batch-parameters] 就是輸入的引數
例如
建立一個指令碼test2.bat
內容為
echo "bat2"
echo %1
echo %~1
就可以直接使用
call test2.bat arg1
就是在指令碼1中,使用call命令呼叫的指令碼2的時候,
會先執行完指令碼2然後在繼續執行指令碼1。
所有這回使用指令碼直接呼叫test2.bat
內容如下
call test2.bat arg1
echo "this is test1.bat"
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]
主要的用途就是
直接呼叫程式,
所有的dos和命令列程式都可以由其啟動
例如
start explorer d:
就是直接啟動D槽
所以綜上所述,
就會發現,
1.呼叫的程式型別不一樣,
call必須是bat指令碼
2. 呼叫的方式不一樣,
call 會暫停當前指令碼,等待呼叫的腳步執行結束後,在執行當前指令碼,
start就會開啟一個視窗直接呼叫程式,相當於啟動一個新的程序執行程式。而不會等待呼叫的程式執行結束
批次處理:Call,Start,直接呼叫,三種方式呼叫批次處理;
call:屬於呼叫的方式,在A.bat中call B. bat,B.bat執行完成後會回到A.bat,且只有一個執行緒工作;
Start:屬於在新建一個執行緒執行bat,在A.bat中Start B. bat,點選執行後,會出現兩個執行緒,A.bat和B.bat各佔一個執行緒;
直接呼叫:屬於在當前執行緒上內容的跳轉,在A. bat中直接呼叫B. bat,點選執行後,執行緒的所有許可權會轉交給B. bat,如果B.bat退出執行緒後,則不會跳回 A.bat。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45