cmd、start命令中有空格的解決方法


1、Runtime.getRuntime().exec("cmd /c start  C:\Program Files")時,會出錯
 
2、Runtime.getRuntime().exec("cmd /c mysql -uXXX -pXXX XXXXXX <"+ filePath);備份數據庫時,含有空格路徑也會出問題;
 
So,怎么解決:
 
1、將路徑加 雙引號“”;這樣似乎可以解決第二類問題,
如:Runtime.getRuntime().exec("cmd /c mysql -uXXX -pXXX XXXXXX< \""+ filePath+"\"")
2、對於第一個問題:如果只加雙引號
Runtime.getRuntime().exec("cmd /c start \""+ filepath +"\"")
執行結果是: 只顯示一個DOS界面,標題欄是完整的filepath內容;
這個出現的原因大概是:
START命令的語法
START:Start a specified program or command in a separate window.
Syntax:     
START "title" [/Dpath] [options] "command" [parameters]

從語法看到,第一個字符串參數被當作新打開的CMD窗口的TITLE,所以前面直接在文件路徑加引號並沒有打開文件,而是只打開一個CMD窗口,可以注意到CMD窗口的標題正是文件的路徑名。
網絡上的解決辦法之一:使用START命令的/Dpath參數選項,如下:

String filepath = "\"F:\\My Documents\" K073.pdf";
Runtime.getRuntime().exec("cmd /c start /D"+filepath);
但是還是沒有解決之(針對我的問題);
 
3、我的解決方法:
start 后跟一對不包括任何內容的雙引號
即:

Runtime.getRuntime().exec("cmd /c start "+"\""+"\"  \""+ filepath+"\""); //再給start后面加一對引號
注意:filePath兩邊仍然加上引號,然后start之后加兩個"",這樣可以解決之;
即:
Runtime.getRuntime().exec("cmd /c start \" \" \""+ filepath+"\"");
 
關於為什么,大概是:

start后面加一對空引號,意味着設置title參數為空,然后后面的filepath被正確解釋文件路徑了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM