PDA

View Full Version : گرفتن نتیجه اجرای دستور cmd در c#



cemohsen
یک شنبه 14 آذر 1389, 13:49 عصر
با سلام
وقتی با cmd یک دستوری رو اجرا می کنیم بعد اون ممکنه اطلاعاتی ازش نمایش داده بشه
چطوری می شه با سی شارپ و دستورات proccess.start یک دستور رو اجرا کرد و بعدش بتونیم به اون خروجی دستور دسترسی داشته باشیم ؟؟؟؟؟

البته منظورم این نیست که مثلا نتیجه رو توی فایل ذخیره کنیم و بعدش بریم بخونیم و ...
می خوام بدونم روشی هست که خروجی به صورت مستقیم بیاد ؟
مثلا خروجی بشه مقدار بازگشتی دستور start ؟؟؟؟

epsi1on
یک شنبه 14 آذر 1389, 14:17 عصر
سلام دوست من.
میتونید از Propertyی StartInfo ی نمونه کلاس Process استفاده کنید که خودش نمونه کلاس ProcessStartInfo که در فضای نام System.Diagnostics هست، هست، و با کمک اون Standard Output برنامه مورد نظر یا بقولی همون stdout برنامه مورد نظرو redirect کنید.
مثلا به این ترتیب (فکر میکنم کد به حد کافی واضح باشه)



Process p = new Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/c " + txtCmdIn.Text;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.WorkingDirectory = dir;
p.Start();

lblCmdOut.Text = p.StandardOutput.ReadToEnd() ;
]

cemohsen
یک شنبه 14 آذر 1389, 15:26 عصر
ممنون از جوابتون
کد واضح بود ، فقط 1 نکته اینکه p.StartInfo.WorkingDirectory رو با dir ست کردید ، اما نگفتید که این dir به کجا اشاره می کنه ؟
تست کردم ، اما نتیجه رو خالی بر می گردونه!

epsi1on
یک شنبه 14 آذر 1389, 15:36 عصر
عذر میخوام، بی دقتی کردم و دقت نکردم که اون قسمت کد رو حذف کنم. (مقدار dir میتونه هر آدرسی باشه).
ولی در مورد مشکل، چه دستور / برنامه ای اجرا میکنید که نتیجه نمیگیرید؟

cemohsen
یک شنبه 14 آذر 1389, 16:05 عصر
درستش کردم ، 1 خطی رو گذاشته بودم که نتیجه رو در فایل ذخیره کنه و حواسم نبود که اون رو حذف کنم ، واسه همین جواب نداده بود

ممنون از راهنماییتون