PDA

View Full Version : چطوری درستورات cmd را در C# اجرا کنیم



game_is_over
سه شنبه 31 مرداد 1391, 14:50 عصر
چطوری درستورات cmd را در C# اجرا کنیم

mbordbar
سه شنبه 31 مرداد 1391, 15:17 عصر
با عرض سلام

یک نگاه به این بنداز

مشکلت حل می شه

http://www.codeproject.com/Articles/25983/How-to-Execute-a-Command-in-C

veniz2008
سه شنبه 31 مرداد 1391, 15:28 عصر
چطوری درستورات cmd را در C#‎ اجرا کنیم
سلام دوست عزیز. به برنامه نویس خوش اومدی.
بستگی داره شما چه استفاده ای رو بخوای از command خودت ببری. بعضی وقت ها میخوایم فقط یه دستور رو اجرا کنیم و نتیجه ای هم برگشت داده نشه . مثل دستور insert یا update یا delete . برای این سه مورد که فقط میخوایم بر روی دیتابیس عملی رو انجام بدیم ( و مقدار برگشتی نداریم) از کد زیر استفاده میشه:

cmd.ExecuteNonQuery();
اما زمانیکه میخوایم نتیجه یک command (دستور sql ) رو به عنوان خروجی دریافت کنیم از دستور زیر استفاده میکنیم. (مثلا دستور select باعث میشه که یک یا چند رکورد برگشت داده بشن ( البته درصورت وجود)):
برای حالاتی که یک یا چند رکورد برگشت داده میشه:

cmd.ExecuteReader();
برای حالاتی که فقط یک مقدار برگشتی داشته باشیم میتوانیم از متد زیر استفاده کنیم ( مثلا تعداد رکوردهای یک جدول که یک مقدار بیشتر نیست مثل 10 یا 20 یا ...)

cmd.ExecuteScalar();

game_is_over
سه شنبه 31 مرداد 1391, 16:15 عصر
اجرای دستورات cmd در ویندوز فرم اپلیکشن رو بهم یاد بدید.
طریقه ی نوشتن رو هم اگه میشه بگید .

game_is_over
سه شنبه 31 مرداد 1391, 17:10 عصر
کسی نمیخواد جواب ما رو بده؟

Arash_janusV3
سه شنبه 31 مرداد 1391, 17:40 عصر
مشکل شما برای من مشخص نیست
شما آیا کدهایی نوشتید و در اجرای آن مشکل دارید؟
اگر کدی دارید آن را بگذارید تا مشکل رو بر طرف کنیم
بیشتر توضیح بدید که می خواهید چه کاری انجام بدبد؟

ali_habibi1384
سه شنبه 31 مرداد 1391, 18:07 عصر
فكر كنم منظورش كامن پرامپت داس هست:
اين تابع رو تعريف كن:

private void ExecuteCommand(string Command, int Timeout, Boolean closeProcess)
{
ProcessStartInfo ProcessInfo;
Process Process;

ProcessInfo = new ProcessStartInfo("cmd.exe", "/C " + Command);
ProcessInfo.CreateNoWindow = false;
ProcessInfo.UseShellExecute = false;
Process = Process.Start(ProcessInfo);
Process.WaitForExit(Timeout);

if (closeProcess == true) { Process.Close(); }
}
حالا ازش استفاده كن مثلا اين دستور 1000 ثانيه بعد كامپيوترو خاموش ميكنه:


ExecuteCommand("shutdown -s -t 1000", 10, true);

game_is_over
سه شنبه 31 مرداد 1391, 18:50 عصر
فكر كنم منظورش كامن پرامپت داس هست:
اين تابع رو تعريف كن:

private void ExecuteCommand(string Command, int Timeout, Boolean closeProcess)
{
ProcessStartInfo ProcessInfo;
Process Process;

ProcessInfo = new ProcessStartInfo("cmd.exe", "/C " + Command);
ProcessInfo.CreateNoWindow = false;
ProcessInfo.UseShellExecute = false;
Process = Process.Start(ProcessInfo);
Process.WaitForExit(Timeout);

if (closeProcess == true) { Process.Close(); }
}
حالا ازش استفاده كن مثلا اين دستور 1000 ثانيه بعد كامپيوترو خاموش ميكنه:


ExecuteCommand("shutdown -s -t 1000", 10, true);


میشه یه پروژه طراحی کنید.
ممنونم

game_is_over
سه شنبه 31 مرداد 1391, 18:54 عصر
میشه یه پروژه طراحی کنید
WindowsFormsApplication

برای ویندوز فرم برای ویژوال استریو 2010

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

Mahmoud.Afrad
سه شنبه 31 مرداد 1391, 18:56 عصر
ایشون کدو گذاشته شما زحمت به خودت بده یه تست بزن بعد اگر به نتیجه نرسیدی مشکلتو بگو

game_is_over
سه شنبه 31 مرداد 1391, 19:05 عصر
ایشون کدو گذاشته شما زحمت به خودت بده یه تست بزن بعد اگر به نتیجه نرسیدی مشکلتو بگو

تست کردم این 2 تا خط خطا میگیره

ProcessStartInfo ProcessInfo; Process Process

game_is_over
سه شنبه 31 مرداد 1391, 19:08 عصر
ایشون کدو گذاشته شما زحمت به خودت بده یه تست بزن بعد اگر به نتیجه نرسیدی مشکلتو بگو


تست کردم این 2 تا خط خطا میگیره

ProcessStartInfo ProcessInfo; Process Process

game_is_over
سه شنبه 31 مرداد 1391, 19:24 عصر
کسی جواب ما رو نداد

hossein_sh2008
سه شنبه 31 مرداد 1391, 19:47 عصر
سلام دوستان
شما بايد اون بالا using رو هم تعريف كنيد
using System.Diagnostics;