Работаю под операционной системой Windows 8.1. Внутри у меня есть файл .bat под названием test.bat, который просто выполняет эхо-команду:Пакет (.bat), вызываемый с Java, не полностью выполняется
echo "123" > output.txt
Всякий раз, когда я запускаю файл из командной строки (cmd.exe), он создает текстовый файл вывода. txt, где записано «123» (я предполагаю, что файл не существует каждый раз, когда для простоты вызывается .bat).
. Байт работает нормально каждый раз, когда я вызываю его из командной строки, но когда я пытаюсь вызвать его из исходного кода Java, .bat не выполняется, хотя код работает нормально (или, похоже, потому что не отображается предупреждение или код ошибки).
Мой исходный код Java идет как это:
import java.io.*;
import java.util.*;
public class HelloWorld {
public static void main(String[] args) throws InterruptedException{
try
{
List<String> command_args = Arrays.asList("cmd.exe", null , " "test.
File dir = new File("C:\\Users\\Administrador\\workspace\\test\\src\\test");
String[] files = dir.list();
Runtime.getRuntime().exec("cmd /c test.bat", null, new File("C:\\Users\\Administrador\\workspace\\test\\src\\test"));
if(files.length == 0)
{
System.out.println("Empty dir");
}
else
{
for(String f: files)
{
System.out.println(f);
}
}
ProcessBuilder pb = new ProcessBuilder(command_args);
pb.directory(dir);
Process proc = pb.start();
//int error = proc.waitFor();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}
Файл называется HelloWorld.java и находится внутри маршрута C: \ Users \ Administrador \ рабочее пространство \ Test \ SRC \ тест. Некоторые строки кода используются для отображения содержимого каталога, на который ссылается переменная dir, которая действительно указывает на правый каталог, поскольку вывод кода показывает файлы внутри каталога (как HelloWorld.java, так и test .летучая мышь).
Если я запустил код, он правильно печатает содержимое каталога и, похоже, выполняет 100% кода, но файл output.txt не создается каждый раз, когда я запускаю код Java. Я пытаюсь использовать два разных способа запуска .bat с Java, используя ProcessBuilder
и непосредственно из Runtime, но ни один из них не получает ожидаемого результата.
Знаете ли вы, возможно ли полностью запустить этот вид .bat с Java или если мне нужно использовать для этого определенную библиотеку?
Заранее благодарен.
если открыть командную строку и введите CMD/с test.bat это работает? если это так, возможно, рабочий каталог не установлен правильно, возможно, начните с выполнения dir и посмотрите, показывает ли он test.bat –
@TheresaForster yes, он выполняет файл .bat. Я также использую метод list() из класса File в Java, чтобы отобразить все содержимое каталога, в котором я пытаюсь вызвать .bat. Он печатает все файлы, как ожидалось, поэтому я считаю, что каталог настроен правильно. Конечно, я ошибаюсь, но как доказать, что это выходит за рамки моих текущих знаний Java. – addictedtohaskell
Попробуйте запустить cmd/c dir. что показывает? –