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

来源:互联网 发布:360家庭网络管理手机版 编辑:程序博客网 时间:2024/05/21 19:45

大家可能都遇到过cmd  里面 当  路径有空格时,打开错误;

如:
1、Runtime.getRuntime().exec("cmd /c start C:/Program Files")时,提示:cmd、start命令中有空格的解决方法

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被正确解释文件路径了。
更详细的,大家可以参见
START /?
查看语法;;;

原创粉丝点击