我有一个被计划任务调用的应用程序。它从Windows Server 2003迁移到Windows Server 2008. 2003年,应用程序在可执行文件所在的目录中运行。 2008年Environment.CurrentDirectory
(C#)报告它在C:\ Windows \ System32中运行。如何设置运行目录?我正在使用schtasks.exe进行命令行部署。
UPD :通过界面,它似乎是动作编辑屏幕上的“开始(可选)”字段。
UPD :看起来使用XML文件可能有所帮助,但我希望没有它。
答案 0 :(得分:51)
只是想添加对Windows Server 2008和2012有效的详细信息。因为很多人可以更好地理解屏幕截图,这里是一个屏幕截图:
总结一下。为计划任务创建操作时,您可以选择设置"开始(可选)"字段(在屏幕截图上以红色圆角)。这将是您的流程触发的目录。
希望这有帮助!
答案 1 :(得分:13)
我最近遇到了同样的问题。我解决它的方法是将/ V1开关添加到schtasks命令。
/ V1创建一个pre-vista兼容的计划任务,并自动填充Start In目录。
答案 2 :(得分:8)
您可以使用以下命令在目录中设置开始
键是/ tr开关中的\。
SCHTASKS /Create /u username /p pswd /ru "NT AUTHORITY\SYSTEM"
/rp /sc ONSTART /tn task-name /tr "\"D:\name-of-file-to-run\" "
答案 3 :(得分:7)
请参阅my answer to a similar question,了解如何设置“唤醒计算机以运行此任务...”选项,该选项仅可从任务计划程序UI(以及通过XML)获得,而不是{{ 1}}命令行。
它的螺母和螺栓是:
schtasks.exe /create
schtasks.exe /create /tn MyTask ...
schtasks.exe /query /xml /tn MyTask > MyTask.xml
答案 4 :(得分:2)
尝试cd /d "<WorkingDirectory>" & schtasks <SchtasksParams>
更改工作目录,然后运行 schtasks 。
答案 5 :(得分:2)
我希望人们会看到XML方法的答案(坦率地说,我认为它是一种更清晰的方法,并且有一些更好的文档可以围绕您可以设置的参数进行配置任务中的具体功能也是如此。
步骤1:创建设置所有任务设置的XML文件,有几个地方可以获取有关XML元素的更多信息:
第2步:具体到&#34;其中&#34;任务将从执行(如在脚本将从命令行开始的起始目录中,这与OP的问题直接相关......您需要配置参数像这样...
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2012-08-19T16:49:14.6182</Date>
<Author>YOUR-COMPUTER-DOMAIN\YOUR-USERNAME</Author>
</RegistrationInfo>
... a bunch of other stuff in between here ....
<Actions Context="Author">
<Exec>
<Command>C:\PythonEXE\mini_program_test.exe</Command>
<Arguments></Arguments>
<WorkingDirectory>C:\Some\where\here\</WorkingDirectory>
</Exec>
</Actions>
</Task>
请注意上面 WorkingDirectory 参数中没有任何引号 - 我之前犯过这个错误。
第3步:由于您将使用schtasks.exe 以通过XML创建此新任务,请查看此处以获取更多信息:https://msdn.microsoft.com/en-us/library/bb736357.aspx
第4步:在Windows命令行中,您将执行类似这样的操作(一旦您的XML准备就绪)
C:\>schtasks /CREATE /TN "TASK-NAME-HERE" /RU "YOUR-USERNAME" /RP "YOUR-PASSWORD" /XML C:\YOUR-XML-FILE-LOCATION\ready.xml
希望这会有所帮助 - 玩得开心!
答案 6 :(得分:0)
在App中使用My.Application.Info.DirectoryPath,无需XML设置。