在不用代碼調從而啟動某個軟體時,windows系統下,通常我們會用到cmd命令行來啟動。本文將介紹 cmd常見的命令行啟動參數。 ...
cmd命令行帶參啟動程式
有一些程式不支持被直接啟動,編寫代碼時,我們可以通過Process類來啟動某個進程(某個軟體),在不用代碼調從而啟動某個軟體時,windows系統下,通常我們會用到cmd命令行來啟動。本文將介紹 cmd常見的命令行啟動參數。
1.cmd幫助
Win+R快捷打開運行視窗,輸入cmd確定打開cmd.exe程式。
cmd幫助:打開 cmd視窗中輸入:cmd /?,回車。即可看到相應指令的含義。
2.cmd啟動參數
使用cmd來啟動某個應用程式,並嚮應用程式傳入參數:
下麵的指令將使用cmd 間接啟動 E盤下的ExportBatchTool.exe程式,並給ExportBatchTool .exe 程式傳入C:\190627.whd的啟動參數:
cmd /C E:\ExportBatchTool.exe C:\190627.whd
/c 在執行完程式之後,cmd也會終止。
命令:cmd /K E:\ExportBatchTool.exe C:\190627.whd同樣會啟動ExportBatchTool.exe程式並傳遞C:\190627.whd參數。
但是,/k 在執行完程式之後,cmd.exe 依然會繼續運行,所以 /c 命令會更適用於自動化的腳本,而 /k命令則更適用於半自動化的腳本。
Cmd視窗下,直接輸入:Start E:\ExportBatchTool.exe C:\190708.whd同樣會啟動ExportBatchTool.exe程式並傳遞C:\190627.whd參數。
START含義:啟動單獨的視窗以運行指定的程式或命令。Cmd下輸入help命令即可查看相應指令含義。
3.參數傳遞註意事項
3.1多參數傳遞
不管java編寫的還是C#寫的程式,其入口是program類中的main函數,此函數可以接收一個string[]類性的參數。所以,cmd參數傳遞只能傳遞字元串數組。那麼數組元素怎麼區分?cmd以一個空格來區分。
在上面例子中,路徑均不涉及空格,且只有一個。如果路徑中有空格的話,為避免將此空格用來區分元素,需用引號將包含該空格的元素(路徑)引起來,表示一個整體。但實際上,當你此時真給路徑加引號,會發現 cmd 就會不識別你的命令路徑。
解決辦法:
在整個傳給 cmd的命令外層再加一層引號,如:
cmd /c " "D:\test flo\test.exe" c:\6283.whd "。
3.2特殊字元傳遞
在cmd幫助中已有詳細的解釋說明。現將部分摘錄如下,具體參考cmd幫助指令來查看特殊字元處理方式:
如果字元串加有引號,可以接受用命令分隔符 “&&” 分隔多個命令。
另外,由於相容性 原因,/X 與 /E:ON 相同,/Y 與 /E:OFF 相同,且 /R 與 /C 相同。任何其他開關都將被忽略。
如果指定了 /C 或 /K,則會將該開關之後的命令行的剩餘部分作為一個命令行處理,其中,會使用下列邏輯 處理引號(")字元:
1)如果符合下列所有條件,則會保留命令行上的引號字元:
- 不帶 /S 開關;
- 正好兩個引號字元;
- 在兩個引號字元之間無任何特殊字元, 特殊字元指下列字元: &<>()@^|;
- 在兩個引號字元之間至少有一個空格字元;
- 在兩個引號字元之間的字元串是某個可執行文件的名稱。
2)否則,老辦法是看第一個字元是否是引號字元,如果是,則去掉首字元並刪除命令行上最後一個引號,保留最後一個引號之後的所有文本。
---------
參考博客文章:https://blog.csdn.net/WPwalter/article/details/94128623