W mojej aplikacji Java chcę uruchomić plik wsadowy, który wywołuje „ scons -Q implicit-deps-changed build\file_load_type export\file_load_type
”
Wygląda na to, że nie mogę nawet uruchomić mojego pliku wsadowego. Nie mam pomysłów.
Oto, co mam w Javie:
Runtime.
getRuntime().
exec("build.bat", null, new File("."));
Wcześniej miałem plik Python Sconscript, który chciałem uruchomić, ale ponieważ to nie zadziałało, zdecydowałem, że wywołam skrypt za pośrednictwem pliku wsadowego, ale ta metoda jeszcze się nie powiodła.
źródło
Win+R
(Runtime) może bezpośrednio uruchamiać pliki wsadowe.Czasami czas wykonywania wątku jest dłuższy niż czas oczekiwania na wątek maszyny JVM; zdarza się, gdy proces, który wywołujesz, zajmuje trochę czasu, użyj polecenia waitFor () w następujący sposób:
W ten sposób maszyna JVM zatrzyma się, dopóki wywoływany proces nie zostanie zakończony, zanim będzie kontynuowany ze stosem wykonywania wątków.
źródło
źródło
Aby uruchomić pliki wsadowe za pomocą javy, jeśli o tym mowa ...
To powinno wystarczyć.
źródło
ProcessBuilder to metoda Java 5/6 do uruchamiania procesów zewnętrznych.
źródło
Plik wykonywalny używany do uruchamiania skryptów wsadowych
cmd.exe
używa/c
flagi do określenia nazwy pliku wsadowego do uruchomienia:Teoretycznie powinieneś być w stanie uruchomić Scons w ten sposób, chociaż nie testowałem tego:
EDYCJA: Amara, mówisz, że to nie działa. Błąd, który podałeś, to błąd, który otrzymasz podczas uruchamiania Javy z terminala Cygwin na komputerze z systemem Windows; czy to właśnie robisz? Problem polega na tym, że Windows i Cygwin mają różne ścieżki, więc wersja Java dla systemu Windows nie znajdzie pliku wykonywalnego scons na ścieżce Cygwin. Mogę wyjaśnić dalej, jeśli okaże się, że to twój problem.
źródło
testowane z jdk1.5 i jdk1.6
To działało dobrze dla mnie, mam nadzieję, że pomaga też innym. aby to uzyskać, walczyłem przez więcej dni. :(
źródło
Miałem ten sam problem. Jednak czasami CMD nie mógł uruchomić moich plików. Dlatego tworzę temp.bat na moim pulpicie, następnie ten temp.bat uruchomi mój plik, a następnie plik tymczasowy zostanie usunięty.
Wiem, że jest to większy kod, ale działał u mnie w 100%, gdy nawet Runtime.getRuntime (). Exec () zawiódł.
źródło
Następujące działa dobrze:
źródło
Ten kod wykona dwa polecenia.bat, które istnieją w ścieżce C: / foldery / folder.
źródło
Aby rozwinąć odpowiedź @ Isha, możesz po prostu wykonać następujące czynności, aby uzyskać zwrócony wynik (po fakcie, a nie w czasie rzeczywistym) skryptu, który został uruchomiony:
źródło