C#'de Bat dosyası nasıl çalıştırılır?

Katılım
18 Aralık 2018
Mesajlar
9.072
Makaleler
14
Çözümler
128
Yer
Dubai
Merhaba. Normalde mining yaptığım sistemi kullanmıyordum ancak kendi bilgisayarımı şuan kullanamadığımdan mining yaptığım bilgisayar üzerinden oyun oynuyorum.

Athlon 3000G mevcut işlemci olarak. Ekran kartı olarak da işlemcinin dahili ekran kartını kullanıyorum. Bazı oyunlar Windows üzerinden güç tasarrufu seçmeme rağmen gidiyor ısrarla mining yapan 3080'ler üzerinde çalışıyorlar. Bende çözümü oyunu açmadan önce kartları devre dışı bırakmakta buldum. Oyunu açmadan önce mining durdurup, kartları devre dışı bırakıp oyunu açtıktan sonra tekrar etkinleştirip mining başlatıyorum. Bu işi otomatiğe bindirmek için bir program yazmaya karar verdim ancak bir yerde tıkandım. Kartları devre dışı bırakma işini ve etkinleştirme işini yapabiliyorum. Ama miningi tekrar başlatamıyorum. Process.Start ile başlattığımda program tıkanıyor. Bat file arkada çalışıyor dolayısıyla çıktıda alamıyorum. Miner yazılımı argümanlarıyla çalıştırmayı denedim ama o da olmadı. Bu sebeple tıkanmış durumdayım.

C#:
    public void sp(string pr, string arg)
        {
            var p = new System.Diagnostics.Process();
           
            switch(pr)
            {
                case "taskkill":
                    p.StartInfo.FileName = "taskkill.exe";
                    p.StartInfo.Arguments = arg;
                    p.StartInfo.RedirectStandardOutput = true;
                    p.StartInfo.UseShellExecute = false;
                    p.StartInfo.CreateNoWindow = true;
                    break;
                case "edevice":
                    p.StartInfo.FileName = "pnputil.exe";
                    p.StartInfo.Arguments = "/enable-device" + " \"" + arg + "\"";
                    p.StartInfo.RedirectStandardOutput = true;
                    p.StartInfo.UseShellExecute = false;
                    p.StartInfo.CreateNoWindow = true;
                    break;
                case "ddevice":
                    p.StartInfo.FileName = "pnputil.exe";
                    p.StartInfo.Arguments = "/disable-device" + " \"" + arg + "\"";
                    p.StartInfo.RedirectStandardOutput = true;
                    p.StartInfo.UseShellExecute = false;
                    p.StartInfo.CreateNoWindow = true;
                    break;
                case "mine":
                    p.StartInfo.FileName = "cmd.exe";
                    p.StartInfo.Arguments = "/c echo Lan";
                   
                    p.StartInfo.UseShellExecute = true;
                    p.StartInfo.CreateNoWindow = false;
                    break;
            }
            try
            {
                    if(p.Start())
                    {
                    p.WaitForExit();
                    p = null;
                    }
            }
            catch(Exception ex)
            {
                richTextBox1.Text = ex.Message;
            }
           
        }
Process.Start için oluşturduğum fonksiyon yukarıda mevcut. Mine kısmına miner'ın çalıştırma argümanlarıyla birlikte exesini yerleştirebilirim yada bat yerleştirebilirim. Programda çökmeye sebep olmadan, elle başlatmışım gibi nasıl çalıştırabilirim.

Şimdiden teşekkürler.
 
Son düzenleyen: Moderatör:
Eğer bat dosyası çalıştırmak istersen.

Process.Start("kullandığın bat konumu");

Eğer cmd üzerinden bir exe çalıştırmak istersen

Kullandığın argümanın başına /c kullanılan.exe yerleştirerek cmd üzerinden çalıştırabilirsin.
 
Bunu yaptığım zaman program kilitleniyor işte. Kilitlenmeden çalıştırmak istiyorum. Yoksa process.start komutunu bende biliyorum.
 
Background worker içerisinde çalıştırarak programı o esnada bike kullanabilirsiniz.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…