15 Nisan 2020 Çarşamba

Windows Batch Dosyası Çalıştırma

Giriş
Java'dan Bat dosyası çalıştırmak için iki tane seçenek var.
1. Runtime sınıfı kullanılır
2 ProcessBuilder sınıfı kullanılır.

Bat dosyalarını çalıştırırken direkt dosya kullanılabilir veya cmd /c veya bunun bir türevi kullanılabilir. Bu örnekleri Windows 10'de denediğimde sorun çıkmadı. Ancak bence  cmd /c ile kullanmak daha iyi.

Cmd Kullanmak
Normalde şöyle yapmak gerekir
cmd /c start myfile.bat
Ancak bir seferinde start'dan sonraki kısmı tırnak içine almak ve slahleri sola değil sağa doğru vermek gerekti. Sebebini bilmiyorum
cmd /c "start c:/foo/barmyfile.bat"

1. ProcessBuilder 

Örnek -Direkt Bat Dosyasını Çalıştırmak
Direkt bat dosyasını kullanmak istersek şöyle yaparız.
String filePath = "C:/test.bat";
Process p = Runtime.getRuntime().exec(filePath);
p.waitFor();        
Örnek - Direkt Bat Dosyasını Çalıştırmak
Eğer array olarak başka parametreler de geçmek istesek yine sorun çıkmaz. Window bir şekilde bat dosyasını cmd ile çalıştırması gerektiğini anlıyor.
ProcessBuilder pb = new ProcessBuilder("upsert.bat");
Process p = pb.start();

2. Runtime Sınıfı
exec() metodu kullanılır. Bu metodun tam 6 tane overload edilmiş hali var.

exec metodu - String
İmzası şöyle. Working Directory uygulamamızın bulunduğu dizindir.
Process exec(String command);
Örnek - cmd Kullanmak
Şöyle yaparız. Burada bat dosyasına tam yolu (full path) veriyoruz.
try {
   Process p =  Runtime.getRuntime()
    .exec("cmd /c start \"C:\\upsert.bat\"");
  } catch (IOException ex) {
}
exec metodu - String + String [] + File
İmzası şöyle
Process exec(String command, String[] envp, File dir);
String [] environment değerlerini içerir
File ise bat dosyasını hangi dizine giderek çalıştıracağımızı belirtir. Yani Working Directory belirtilir.

Örnek - cmd Kullanmak
Şöyle yaparız.
Process p =  Runtime.getRuntime().exec("cmd /c upsert.bat", null,
  new File("C:\\Program Files\\salesforce.com\\Data Loader\\cliq_process\\upsert"));

Hiç yorum yok:

Yorum Gönder