1

我正在编写一个会自动安排任务的应用程序。它应该适用于 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 上自动运行。

如果有人可以帮助我,我将不胜感激。我已经在这个问题上工作了几天了。

4

1 回答 1

0

没有XP机器或Windows XP模式,这一切都是在黑暗中刺伤。

我的主要预测是,我认为您不必转义引号,/tn \"<Script Name>\"因为我在测试时遇到了错误。可能也是如此/tr \"%s\\<File To Run>.exe\"。即使其中任何一个有空格,正常的(未转义的)引号也应该这样做。我schtasks /Create /TN \"name\" /TR cmd /SC once /ST 12:00在 Windows 7 中测试,我得到了错误ERROR: The filename, directory name, or volume label syntax is incorrect.
另一件事是您已/SC设置为minute,但您也已/MO设置为60。我预测这在 Windows 7 上很好,但这可能会让 XP 抱怨。设置/SCHOURLY 可能值得一试(如果 XP 有该选项)。

最后一点,一般来说,Windows 实用程序在版本之间不会发生很大变化,特别是如果它们没有在帮助文件中显示它们的版本。自 XP 以来,除了/XML选项(以及/V1)之外,任何基本内容都不太可能发生变化。如果它在 7 中工作,那么它在 XP 中工作的可能性大约为 95%,所以你也可以尝试在那里测试一些东西。

作为旁注,CMD 的转义字符^似乎适用于所有应用程序。 schtasks /Create /TN ^"name^" /TR cmd /SC once /ST 13:00并且schtasks /Create /TN "name" /TR cmd /SC once /ST 13:00两者都工作得很好,尽管它们确实相互覆盖并且只是name没有引号的名称(Windows可能在创建它们之前剥离了引号)。

于 2013-12-12T06:38:08.510 回答