Schtaks - 命令提示符参数
Schtaks - Command Prompt Parameters
我有一个批处理文件,我需要 运行 每 x
分钟。我知道如何设置计划任务,但我不确定是否有参数可以用来利用高级设置 "Stop the existing instance".
基本上,如果由于某种奇怪的原因第一个实例没有完成,我希望能够每 x
分钟和再次 运行 时 运行 批处理文件,我需要将其杀死并将新实例添加到 运行。
现在,我正在使用:
schtasks /create /tn [TASKNAME] /tr C:\[DIR]\au.bat /sc MINUTE /mo 15 /ru "System"
这很好,但是缺少这个额外的部分。
我已经知道 GUI 是一个选项,但我使用命令提示符的原因是它包含在安装程序中,客户将使用它来简化他们的工作,我不希望他们必须执行进入 GUI 的最后一步以进行此更改。
编辑:
结束了这样的事情:
REM Checks to see if any instances of 'MYTITLE'
FOR /F "tokens=* USEBACKQ" %%F IN (`tasklist /v /fo csv ^| findstr /i MYTITLE`) DO (
FOR /F "tokens=2 delims=," %%B IN (%%F) DO (
taskkill /pid %%B /f
)
)
title=MYTITLE
[BATCH FILE DOES STUFF HERE]
启动时,它会查看是否有匹配 MYTITLE
的实例,然后终止这些任务。然后命名自己和 运行s 批次。如果它保持打开状态,它会在下次执行任务时被杀死 运行.
您可以将应用程序的 STATUS
(即 {START、STOP、运行、...})与其 PID
一起存储在环境变量中。
例如(环境变量):
MY_APP_STATUS = 1
MY_APP_PID = 1234
获取PID,见:
getting process ID of exe running in Bat File,
how to get own process pid from the command prompt in windows
在您的批处理脚本中,如果使用 PID
.
设置环境变量,您可以终止 运行 批处理
您可以使用 taskkill
命令来执行此操作:
taskkill /pid 1234 /f
您需要在终止现有 运行 批处理后重置 STATUS
标志,并使用新的 运行 实例更新 PID
。
实际上,快速简单地回答我的问题是在 GUI 的任务计划程序中简单地设置任务,当所有参数都设置好后,只需导出 xml 文件。完成后,您只需使用 /xml
选项创建。
schtasks /create /tn [TASKNAME] /XML C:\[DIR]\schedule.xml
我有一个批处理文件,我需要 运行 每 x
分钟。我知道如何设置计划任务,但我不确定是否有参数可以用来利用高级设置 "Stop the existing instance".
基本上,如果由于某种奇怪的原因第一个实例没有完成,我希望能够每 x
分钟和再次 运行 时 运行 批处理文件,我需要将其杀死并将新实例添加到 运行。
现在,我正在使用:
schtasks /create /tn [TASKNAME] /tr C:\[DIR]\au.bat /sc MINUTE /mo 15 /ru "System"
这很好,但是缺少这个额外的部分。
我已经知道 GUI 是一个选项,但我使用命令提示符的原因是它包含在安装程序中,客户将使用它来简化他们的工作,我不希望他们必须执行进入 GUI 的最后一步以进行此更改。
编辑: 结束了这样的事情:
REM Checks to see if any instances of 'MYTITLE'
FOR /F "tokens=* USEBACKQ" %%F IN (`tasklist /v /fo csv ^| findstr /i MYTITLE`) DO (
FOR /F "tokens=2 delims=," %%B IN (%%F) DO (
taskkill /pid %%B /f
)
)
title=MYTITLE
[BATCH FILE DOES STUFF HERE]
启动时,它会查看是否有匹配 MYTITLE
的实例,然后终止这些任务。然后命名自己和 运行s 批次。如果它保持打开状态,它会在下次执行任务时被杀死 运行.
您可以将应用程序的 STATUS
(即 {START、STOP、运行、...})与其 PID
一起存储在环境变量中。
例如(环境变量):
MY_APP_STATUS = 1
MY_APP_PID = 1234
获取PID,见:
getting process ID of exe running in Bat File,
how to get own process pid from the command prompt in windows
在您的批处理脚本中,如果使用 PID
.
您可以使用 taskkill
命令来执行此操作:
taskkill /pid 1234 /f
您需要在终止现有 运行 批处理后重置 STATUS
标志,并使用新的 运行 实例更新 PID
。
实际上,快速简单地回答我的问题是在 GUI 的任务计划程序中简单地设置任务,当所有参数都设置好后,只需导出 xml 文件。完成后,您只需使用 /xml
选项创建。
schtasks /create /tn [TASKNAME] /XML C:\[DIR]\schedule.xml