2013-10-23 25 views
1

我正在編寫一個將自動安排任務的應用程序。它應該可以在Windows 7和Windows XP上運行。不幸的是,我似乎無法在Windows XP上運行它。在Windows 7中成功安排並運行的任務無法在Windows XP中運行

在setup.c文件中,我創建了批處理文件並執行它。在Windows 7版本中,任務命令如下:

schtasks /create /tn \"<Script Name>\" /xml \"%s\\<Script XML>\" 

其中%s是安裝文件(和臨時批處理腳本)的工作目錄。這種方法已經在多臺Windows 7機器上測試過,並且已經被證實可以在所有這些機器上完美運行。我決定使用XML文件創建任務的原因是因爲該任務不會在便攜式計算機上運行,​​因爲默認情況下,自動生成的XML將腳本設置爲在電池上不運行。

但是,當我嘗試在Windows XP上運行相同的應用程序時,出現無法識別/ xml參數的錯誤,因此我重寫了XP的任務計劃命令。我知道這個應用程序運行的XP電腦不是筆記本電腦,所以我想我不必擔心自動生成的XML的「不能在電池上運行」部分。

下面是Windows XP版本的任務命令:

schtasks /create /tn \"<Script Name>\" /tr \"%s\\<File To Run>.exe\" /sc minute /mo 60 

當應用程序完成安裝,我得到的狀態消息上,我安排任務「無法運行」。我知道我安排的可執行文件可以工作,因爲它在我手動運行(在XP和Windows 7上)時工作正常,所以我絞盡腦汁試圖找到解決此問題的解決方案。

如果重要,可執行文件是C#文件。我記錄了批處理文件和C#可執行文件的操作目錄,它們都是正確的,所以我不確定爲什麼我無法在Windows XP上自動運行此任務。

如果有人能幫助我,我會很感激。我已經在這個問題上工作了幾天了。

回答

0

沒有XP機器或Windows XP模式,這都是在黑暗中刺傷。

我的主要預測是,我認爲你不必逃避/tn \"<Script Name>\"中的引號,因爲我在測試時遇到錯誤。 /tr \"%s\\<File To Run>.exe\"也是如此。即使其中任何一個都有空格,正常(未轉義)的引號也應該這樣做。我在Windows 7中測試了schtasks /Create /TN \"name\" /TR cmd /SC once /ST 12:00,並得到了錯誤ERROR: The filename, directory name, or volume label syntax is incorrect.
另一件事是你有/SC設置爲minute,但你也有/MO設置爲60。我預測在Windows 7上這很好,但這可能會讓XP抱怨。設置/SCHOURLY可能值得一試(如果XP有這個選項)。

作爲最後一點,通常,Windows實用程序在版本之間不會發生大規模變化,特別是如果它們不在幫助文件中顯示其版本。除了/XML選項(以及/V1)之外,自XP以來基本上沒有任何變化。如果它能在7下運行,那麼它有95%的機會在XP中運行,所以你也可以嘗試在那裏測試一些東西。

作爲一個附註,CMD的轉義字符是^看似所有的應用程序。schtasks /Create /TN ^"name^" /TR cmd /SC once /ST 13:00schtasks /Create /TN "name" /TR cmd /SC once /ST 13:00都能很好地工作,雖然它們覆蓋了對方,只是名稱爲name而沒有引號(在創建引號之前,窗口可能會剝掉引號)。

相關問題