问题在使用cmd打开多个空格的文件

我使用java调用下面的命令

这是java的初始化

String fileName="C:\\temp\\A a.txt"; String sCmd = "cmd /c start \"\" \"" + fileName + "\""; 

这是我打印sCmd时得到的

  cmd /c start '" 'C:\temp\A a.txt' 

这是我如何运行命令

  Runtime.getRuntime().exec(sCmd); 

文件名包含多个空格,当我从Java运行这个命令时,它抛出一个错误,因为它不能识别多个空格。它没有空间或一个空间时有效?如何通过Windows命令处理多个空格的文件

示例Java程序

  import java.io.File; import java.io.IOException; public class A { public static void main(String[] args) { String fileName = "C:\\temp\\a dfdfd f.txt"; File file = new File(fileName); String sCmd = "cmd /c start \"\" \"" + file.getAbsolutePath() + "\""; System.out.println("exec cmd=<" + sCmd + ">"); try { Runtime.getRuntime().exec(sCmd); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 

当我运行java代码的时候,这使我从Windows端出错。

这是java输出

 exec cmd=<cmd /c start "" "C:\temp\a dfdfd f.txt"> 

而且我在Windows XP中运行更进一步,这是不打开任何文件留下一个空格。

解:

 import java.io.File; import java.io.IOException; public class A { public static void main(String[] args) { // String fileName = "C:\\temp\\a.txt"; String fileName = "C:\\temp\\a dfdfd f.txt"; File file = new File(fileName); String sCmd = "cmd /c start \"\" \"" + file.getAbsolutePath() + "\""; System.out.println("exec cmd=<" + sCmd + ">"); try { Runtime.getRuntime().exec(sCmd.split(" ")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 

cmd /c start "C:\temp\A a.txt"从命令行工作。 如果通过Java的Runtime.getRuntime().exec(...)调用此命令,则需要使用反斜杠来避免上述命令中的双引号Runtime.getRuntime().exec(...)

我不确定你在做什么,但是如果它只是cmd /c start <filename>那么这个引用太多了。

 String sCmd = "cmd /c start \"\" \"" + fileName + "\""; 

它应该是

 String sCmd = "cmd /c start \"" + fileName + "\""; 

作为旁白:

这是我打印sCmd时得到的

 cmd /c start '" 'C:\temp\A a.txt' 

我不明白你怎么能得到单引号输出,当他们不在你的字符串中!