使用cmd打开多个空格的文件时出现问题

时间:2011-04-20 04:02:03

标签: java windows 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();
        }
    }
}

2 个答案:

答案 0 :(得分:5)

cmd /c start "C:\temp\A a.txt"在命令行中运行。 如果通过Java Runtime.getRuntime().exec(...)

调用此命令,则需要使用反斜杠转义上述命令中的双引号

答案 1 :(得分:1)

我不确定你在做什么,但如果它只是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'

我不知道当你的字符串中没有单引号时你怎么能得到单引号!