2

我有一个我试图在登录时运行的程序,它依赖于它所在目录中的文件。通过从命令行手动运行程序,我已经 cd'd 到,一切运行正常。但是,如果我安排一个任务来运行该程序,我会从我的程序中收到一个错误,抱怨找不到它需要的文件。所以我的问题是/是:1.)计划任务的工作目录是程序的位置吗?2.)如果没有,我将如何将工作目录设置为程序的位置?

这是我正在使用安排我的任务的代码:

SCHTASKS /Create /TN "Test" /TR $MyLocation\Test.exe /sc onlogon /RL Highest

其中“$MyLocation”是我设置为引用程序目录的 powershell 变量。

4

2 回答 2

0

我过去通过使用批处理文件解决了这个问题。您可以在批处理文件中使用一个巧妙的技巧,它将为您提供批处理文件所在的目录。因此,您可以非常轻松地运行您想要的应用程序。使用以下内容创建一个批处理文件并将其放在应用程序旁边的目录中,然后将其路径设置为 /TR 参数的值。

%~dp0\Test.exe

严格来说,反斜杠不是必需的,因为%~dp0无论如何都包含尾随反斜杠。我认为它使批处理文件更具可读性。

于 2012-06-06T10:22:14.633 回答
0

如果您运行脚本并将 $MyLocation 作为参数发送,则类似这样的操作将设置任务 o:

 $cmdFile = "$MyLocation\Test.cmd"
 New-Item $cmdFile -type file
 "cd $MyLocation" >> $cmdFile
 "powershell -command '& {$($MyLocation)\Test.exe}'" >> $cmdFile
 SCHTASKS /Create /TN "Test" /TR $cmdFile /sc onlogon /RL Highest

吉斯利

于 2012-06-06T16:35:47.237 回答