Я вызываю приведенную ниже команду, используя 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();
}
}
}
Это дает мне ошибку, когда со стороны Windows, когда я запускаю код Java.
Это вывод 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();
}
}
}