我有一个程序,我试图在登录时运行,该程序依赖于它所在的同一目录中的文件。通过从命令行手动运行程序,我已经cd了,一切都按预期运行。但是,如果我安排一个任务来运行程序,我的程序会收到一个错误,抱怨找不到它需要的文件。所以我的问题是:1。)计划任务的工作目录是程序的位置吗? 2.)如果没有,我如何将工作目录设置为程序的位置?
以下是我正在使用计划我的任务的代码:
SCHTASKS /Create /TN "Test" /TR $MyLocation\Test.exe /sc onlogon /RL Highest
其中“$ MyLocation”是我设置为引用程序目录的powershell变量。
答案 0 :(得分:0)
我过去使用批处理文件解决了这个问题。您可以在批处理文件中使用一个巧妙的技巧,它将为您提供批处理文件所在的目录。因此,您可以非常轻松地运行所需的应用程序。创建一个包含以下内容的批处理文件,并将其放在应用程序旁边的目录中,然后将其路径设置为/ TR参数的值。
%~dp0\Test.exe
严格来说,不需要反斜杠,因为%~dp0
包含反斜杠。我认为它使批处理文件更具可读性。
答案 1 :(得分: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
吉斯利