2013-07-19 79 views
2

我想創建一個使用C#的Windows任務計劃程序的Task Scheduler,以在特定時間運行我的.bat(批處理)文件。使用C#的任務計劃程序(要安排.bat(批處理文件))

,我發現在這方面他們安排觸發這個有用的鏈接(http://www.codeproject.com/Articles/38553/TaskScheduler

,我想我的安排.bat文件 我的意思是當我想給我的批處理文件路徑在標籤文本框,它只是發射扳機,不能運行我的批處理文件 所以,我修改代碼一點,現在我能夠運行我的批處理文件還,

但是,當我關閉我的應用程序觸發還停止, 是這樣,有任何方式我可以觸發或運行我的批處理文件,即使我關閉我的應用程序鏈接窗口任務調度?

請幫助我。

注:其桌面應用程序中使用C#

+1

你的問題不清楚,但你不能只是將它作爲參數傳遞給main? – doctorlove

+1

你有什麼理由不能只使用Windows任務調度器? – Riv

+0

@Reubz這個應用程序我們是爲非技術人員的員工製作的,所以我們必須創建一個桌面表單,通過它我們可以調度我們的批處理文件,並且此批處理文件將調用其他控制檯應用程序。 –

回答

0

您可以將您的批處理文件的路徑標籤文本.Checkbox的活躍在同一時間僅箱,設置時間和當時的觸發觸發器。

注意:它只是消防的觸發器。你在說什麼是運行批處理文件。在這種情況下,你需要修改代碼。你就可以開始從

private void buttonCreateTrigger_Click(object sender, EventArgs e) 
    { 
     CreateSchedulerItem(); 
    } 

在Demo.cs頁

爲了運行文件或EXE在TaskScheduler.cs查找和替換該代碼

 void _triggerTimer_Tick(object sender, EventArgs e) 
    { 
     _triggerTimer.Stop(); 
     foreach (TriggerItem item in TriggerItems) 
      if (item.Enabled) 
       while (item.TriggerTime <= DateTime.Now) 
        item.RunCheck(DateTime.Now); 
        System.Diagnostics.Process.Start("Your Path"); 
     _triggerTimer.Start(); 
    } 

現在你可以將這條道路保存在一些普通的類中,並使它們都可以訪問它們。

+0

你,當我給我的批處理文件路徑在標籤文本框其剛剛解僱觸發,不運行我的批處理文件。 所以,我期待的代碼,如何運行我的批處理文件, 我嘗試在私人無效CreateSchedulerItem(點點修改)和事件triggerItem_OnTrigger 但我沒有得到解決 –

+0

@VARUNNAYAK檢查我的答案... ...和標誌它的答案,如果它有助於:) – Rohit

+0

哎代碼,謝謝,我只是修改點點, '如果(item.Enabled) 而(item.TriggerTime <= DateTime.Now) { item.RunCheck(日期時間。現在); System.Diagnostics.Process.Start( 「C:\\用戶\\ ST_User_1 \\桌面\\ DGFTServer」); }' 而且,我的程序完美運行! 但是,當我關閉我的應用程序,比如Window任務計劃其無法運行。 –

0

那麼,有什麼問題嗎?下載後,您可以檢查Demo.cs,在那裏您可以找到方法private void CreateSchedulerItem()和事件triggerItem_OnTrigger。您可以更改此事件以運行您需要的批處理文件。

+0

你能告訴我應該應用什麼類型的修改?!! –

+0

你嘗試了什麼? – colotiline

+0

我在編碼這麼改,現在我能夠運行我的批處理文件,根據日程安排, 但是當我結束我的程序不能安排, 那麼,有沒有什麼辦法,即使運行我的批處理文件終止我的應用程序,就像窗口任務調度 –

0

就是這樣。我希望你可以在System.Diagnostics上更換Console.WriteLine

static void Main(string[] args) { 
    AutoResetEvent autoResetEvent = new AutoResetEvent(false); 
    Timer timer = new Timer(PrintHello, autoResetEvent, 0, 5000); 
    autoResetEvent.WaitOne(); 
} 

private static void PrintHello(Object state) { 
    Console.WriteLine("Hello"); 
} 
相關問題