使用schtasks.exe为计划任务指定运行目录

Eug*_*atz 38 windows scheduled-tasks schtasks.exe windows-server-2008

我有一个被计划任务调用的应用程序.它从Windows Server 2003迁移到Windows Server 2008. 2003年,应用程序在可执行文件所在的目录中运行.在2008年Environment.CurrentDirectory(C#)报告它在C:\ Windows\System32中运行.如何设置运行目录?我正在使用schtasks.exe进行命令行部署.

UPD:通过界面,它似乎是动作编辑屏幕上的"开始(可选)"字段.

UPD:看起来使用XML文件可能有所帮助,但我希望没有它.

Ang*_*nov 58

只是想添加对Windows Server 2008和2012有效的细节.因为很多人可以更好地理解屏幕截图,这里是一个屏幕截图:
在此输入图像描述

把它们加起来.为计划任务创建操作时,您可以选择设置"开始(可选)"字段(在屏幕截图中以红色圆角).这将是您的流程触发的目录.

希望这可以帮助!

  • 我相信OP想要使用`schtasks.exe`,而不是任务计划程序. (8认同)
  • 虽然OP不是在寻找这个,但它帮助我解决了我的问题.为此+1.:) (2认同)

小智 13

我最近遇到了同样的问题.我解决它的方法是将/ V1开关添加到schtasks命令.

/ V1创建一个pre-vista兼容的计划任务,并自动填充Start In目录.

  • 是 - 但通过使用`/ V1`,您不能再创建在SYSTEM帐户(`/ RU SYSTEM`)下运行的任务,或者您将收到错误消息_ERROR:该任务已配置了不受支持的组合帐户设置和运行时选项._ (3认同)
  • 看起来好像使用/ V1时,无法通过指定/ TN'\ TaskFolder\TaskName'将任务添加到任务文件夹,因为schtasks将返回错误:"任务名称可能不包含字符:<>:/\|" (3认同)

小智 8

您可以使用以下命令在目录中设置start

关键是/ tr开关中的\.

SCHTASKS /Create /u username /p pswd /ru "NT AUTHORITY\SYSTEM"
  /rp /sc ONSTART /tn task-name /tr "\"D:\name-of-file-to-run\" "
Run Code Online (Sandbox Code Playgroud)

  • 这个答案中缺少什么吗?例如,如果我想在"c:\ window\my.exe"运行程序,并且目录中的开头应该在"c:\ temp"中,我该怎么办? (8认同)
  • 想知道是否有人可以对这一点有所了解? (3认同)
  • 似乎无法让这个工作。`\"` 似乎是转义的双引号,在这种情况下,`schtasks` 帮助提到您可以使用单引号 `'` 代替作为内引号。这里的解决方案可帮助您从一个特定的文件夹,但该应用程序的**工作目录**仍未设置为该文件夹。您可以使用包含“pause”命令的“.bat”批处理文件进行测试,并查看它停止在哪个目录中。 (2认同)

Nic*_*icJ 7

请参阅我对类似问题的回答,如何设置"唤醒计算机以运行此任务..."选项,该选项仅可从任务计划程序UI(以及通过XML)获得,而不是schtasks.exe /create命令行.

它的螺母和螺栓是:

  1. 通过创建您的任务 schtasks.exe /create /tn MyTask ...
  2. 通过以下方式将任务导出到XML schtasks.exe /query /xml /tn MyTask > MyTask.xml
  3. 通过XSLT或搜索/替换更新此XML
  4. 通过重新导入(覆盖旧任务) schtasks.exe /create /tn MyTask /xml MyTask.xml /f

细节在这里.