You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过批处理文件及cmd设置任务计划程序的Start in(可选)属性

如何设置任务计划程序的「Start in」属性

嘿,我来帮你搞定这个问题!首先得说明:SchTasks /Create命令本身并没有直接指定「Start in(起始目录)」的参数,但咱们有两种可靠的方法来设置这个属性,下面详细说:

方法一:用XML模板创建任务(推荐)

这是最稳妥的方式,因为XML可以明确定义任务的所有属性,包括起始目录:

  1. 先创建一个XML模板文件(比如命名为TaskTemplate.xml),把下面的内容复制进去,记得替换掉<WorkingDirectory>的值为你需要的起始目录(这里用%~dp0就代表批处理所在的目录,和你原来的命令一致),其他参数可以根据需求调整:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2024-05-20T00:00:00</Date>
    <Author>YourName</Author>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <StartBoundary>2024-05-20T09:00:00</StartBoundary>
      <ScheduleByDay>
        <DaysInterval>1</DaysInterval>
      </ScheduleByDay>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>%~dp0\Data.bat</Command>
      <WorkingDirectory>%~dp0</WorkingDirectory> <!-- 这里就是「Start in」对应的属性 -->
    </Exec>
  </Actions>
</Task>
  1. 然后用下面的命令导入这个XML来创建任务:
SchTasks /Create /TN "Task" /XML "TaskTemplate.xml"

方法二:修改已创建的任务

如果你已经用原来的命令创建了任务,也可以通过导出-修改-导入的方式来添加起始目录:

  1. 先把已有的任务导出为XML文件:
SchTasks /Query /TN "Task" /XML > TaskExported.xml
  1. 打开导出的TaskExported.xml,找到<Exec>节点,添加或修改<WorkingDirectory>节点,比如:
<Exec>
  <Command>C:\YourPath\Data.bat</Command>
  <WorkingDirectory>C:\YourPath</WorkingDirectory> <!-- 这里设置你的起始目录 -->
</Exec>
  1. 删除原任务,再导入修改后的XML:
SchTasks /Delete /TN "Task" /F
SchTasks /Create /TN "Task" /XML "TaskExported.xml"

临时替代方案(不推荐,但应急可用)

如果不想折腾XML,也可以在/TR参数里通过cmd /c先切换目录再运行批处理,效果类似设置「Start in」,但这不是真正修改任务的属性:

SchTasks /Create /SC DAILY /TN "Task" /TR "cmd /c ""cd /d \"%~dp0\" && Data.bat""" /ST 09:00

不过这种方法的引号容易出错,还是XML方法更可靠。

内容的提问来源于stack exchange,提问作者user656990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:51:22