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

大家可能都遇到过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 /?
查看语法;;;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值