在Windows 7中成功安排和运行的任务无法在Windows XP中运行

时间:2013-10-23 01:57:19

标签: c# batch-file windows-7 windows-xp schtasks.exe

我正在编写一个自动安排任务的应用程序。它应该适用于Windows 7和Windows XP。不幸的是,我似乎无法在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上自动运行。

如果有人能帮助我,我真的很感激。我已经在这个问题上工作了几天了。

1 个答案:

答案 0 :(得分: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抱怨。将/SC设置为HOURLY可能值得一试(如果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没有引号(窗口可能在创建之前删除了引号)。