在设置计划任务时,对于操作部分,我尝试访问要运行的可执行文件位置的环境变量。这主要是因为在一台机器上,可执行文件可能位于 C:,而在另一台机器上,可执行文件可能位于 D:。我已经验证,如果我使用硬编码路径,我的计划任务就会运行,但如果我将操作更改为指向,则"%MyAppPath%\MyApp.exe"
任务不会开始出现启动失败。我已经验证环境变量已设置。
任务计划的操作(和工作目录)部分内是否可以引用环境变量 - 我的语法错误吗?
顺便说一句,我确实考虑过调用一个 BAT 文件并在那里引用环境变量,但这并不能解决我的问题,因为主要问题实际上是知道应用程序(以及 bat 文件)是在 C: 还是 D: 驱动器上 - 在驱动器本身内部,路径是相同的。
更新:事实证明,您可以通过重新启动机器来使用它们,但也许有更好的方法
答案1
您不需要重新启动机器。您应该终止 Taskeng.exe,下次运行计划任务时它将获得更新的环境。
答案2
我以为您可以从任务计划程序中引用环境变量,但是刚刚尝试过,似乎不行。
唯一的例外似乎是%PATH%
,那么是否可以将您的MyAppPath
值添加到%PATH%
每台机器的集合中,然后只需MyApp.exe
从任务调度程序调用,机器将能够根据需要解析完全限定的路径?
答案3
顺便说一句,我确实考虑过调用一个 BAT 文件并在那里引用环境变量,但这并不能解决我的问题,因为主要问题实际上是知道应用程序(以及 bat 文件)是在 C: 还是 D: 驱动器上 - 在驱动器本身内部,路径是相同的。
%~d0
将扩展为批处理文件所在的驱动器号。(%~dp0
对于驱动器+目录,等等。)
答案4
顺便说一句,我确实考虑过调用一个 BAT 文件并在那里引用环境变量,但这并不能解决我的问题,因为主要问题实际上是知道应用程序(以及 bat 文件)是在 C: 还是 D: 驱动器上 - 在驱动器本身内部,路径是相同的。
扩展 grawity 的答案,我使用了一个两步过程。这允许我在需要时在其他语句中使用该路径。
SET WD=%~dp0
pushd %WD%
注意:pushd
更改驱动器和目录。如果您想要干净,请popd
在完成后进行。