2013-09-30 16 views
5

Java programımdan başka bir dizinde bulunan bir toplu iş dosyasını çalıştırmaya çalışıyorum.Toplu iş dosyasını Java kodundan çalıştırın

try { 
     Process p = Runtime.getRuntime().exec("cmd /c start \"C:\\Program Files\\salesforce.com\\Data Loader\\cliq_process\\upsert\\upsert.bat\"") ;   
    } catch (IOException ex) { 
    } 

sonuç programı programı çalıştırmak ve ben sağlanan dosya yolunu erişmez kök dizininde bir cmd penceresi açar şudur: Aşağıdaki kodu var.

+0

derseniz benim için çalıştı edilir takiben "/ başlar?" bir Komut İstemi penceresinden, seçenekleri 'start' komutuna açıklar; Yardımcı olabilecek bir "/ D " seçeneği var. – ajb

cevap

20

yerine Runtime.exec(String command), sen exec(String command, String[] envp, File dir) yöntem imza kullanmak gerekir:

Process p = Runtime.getRuntime().exec("cmd /c upsert.bat", null, new File("C:\\Program Files\\salesforce.com\\Data Loader\\cliq_process\\upsert")); 

Ama şahsen ben Runtime.exec() biraz daha ayrıntılı ama kullanımı çok daha kolay ve hata ayıklama olan yerine ProcessBuilder kullanmayı tercih ediyorum.

ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "upsert.bat"); 
File dir = new File("C:/Program Files/salesforce.com/Data Loader/cliq_process/upsert"); 
pb.directory(dir); 
Process p = pb.start(); 
+1

Dir, daha önce eklediğim yol mu? ("\" C: \\ Program Files \\ salesforce.com \\ Veri Yükleyici \\ cliq_process \\ upsert \\ upsert.bat \ "") – Ricardo

+0

Kullandığınız ProcessBuilder, – MadProgrammer

+0

tekliflerine ihtiyacınız olmayacağına inanıyorum @Ricardo Açıklama için teşekkürler; Ben herhangi bir varsayım yapmıyordum. Cevabı güncelleyeceğim, çünkü bu onu biraz daha basitleştiriyor. – rob

6

deneyin aşağıdaki

try { 
      String[] command = {"cmd.exe", "/C", "Start", "D:\\test.bat"}; 
      Process p = Runtime.getRuntime().exec(command);   
     } catch (IOException ex) { 
     } 
+4

Erken olduğu için bir şeyleri kaçırıyor olabilirim, fakat bu OP'nin yaptığı şeyden farklı mıdır? Belirli bir yerde bir toplu iş dosyasını yürütmeleri gerekiyor – MadProgrammer

2

Kodunuz iyi, ama sorun toplu dosya içindedir.

Yarasa dosyasının içeriğini göstermeniz gerekiyor, sorununuz, yarasanın içindeki yollardadır.

0
import java.lang.Runtime; 

Process run = Runtime.getRuntime().exec("cmd.exe", "/c", "Start", "path of the bat file"); 

Bu sizin için çalışacaktır ve kullanımı kolaydır.

1

Eğer

File dir = new File("E:\\test"); 
     ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "Start","test.bat"); 
     pb.directory(dir); 
     Process p = pb.start(); 
İlgili konular