.net ile cmd.exe’ye Komut Gönderme

Uygulama geliştirirken kendi sunucunuzda çalışmak bulunmaz bir nimet. İstediğiniz özelliğe müdahale edebiliyorsunuz. Komut satırı üzerinden çalıştıracağınız herhangi bir komutu ister web ister masaüstü ortamında çalıştırmak mümkün ve oldukça basit.

.net ortamından cmd komutu çalıştırmak için öncelikle sunucu işletim sistemi üzerinde ki cmd adresini bilmeniz gerkiyor ki  özel bir ayar yapmadıysanız C:\Windows\System32\cmd.exe ‘dir. Yapacağınız tüm işlemleri cmd üzerinden yapmanız gerekiyor. Mesela ffmpeg kütüphanesinden ortam çevirisi yapacaksanız cmd exe üzerinden ffmpeg.exe ye parametre göndererek çalışmanız gerekiyor.

Gelelim komutu çalıştıran fonksiyona:

public void ExecuteCommandSync( string command )
        {
            ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
            cmdStartInfo.FileName = @"C:\Windows\System32\cmd.exe";
            cmdStartInfo.RedirectStandardOutput = true;
            cmdStartInfo.RedirectStandardError = true;
            cmdStartInfo.RedirectStandardInput = true;
            cmdStartInfo.UseShellExecute = false;
            cmdStartInfo.CreateNoWindow = true;

            Process cmdProcess = new Process();
            cmdProcess.StartInfo = cmdStartInfo;
            cmdProcess.EnableRaisingEvents = true;
            cmdProcess.Start();
            cmdProcess.BeginOutputReadLine();
            cmdProcess.BeginErrorReadLine();

            cmdProcess.StandardInput.WriteLine(command); 
            cmdProcess.StandardInput.WriteLine("exit");

            cmdProcess.WaitForExit();



            return;
           
        }

Örneğin ffmpeg üzerinde flv dosyasını mp4 e çevirmek için(sunucuda ffmpeg kurulu olması gerekiyor):

ExecuteCommandSync("ffmpeg -i video.mp4 video.avi")

Şeklinde basitçe kullanabilirsiniz.

İyi Çalışmalar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir