答案1
schtasks 命令可以立即运行定义的任务。
从如何使用 Schtasks.exe 在 Windows Server 2003 中安排任务
Schtasks/运行
立即启动计划任务。运行操作将忽略计划,但使用任务中保存的程序文件位置、用户帐户和密码立即运行任务。
句法:
schtasks /run /tn TaskName [/s computer [/u [domain\]user /p password]] /?
因此只需定义任务,然后在需要时立即运行它。
答案2
在...之上工作基思的回答满足您的需求:
timeout /t X ; psexec -i -s Y
在哪里
timeout
取代 Windows 7 中的睡眠功能。X
是个等待的秒数由 定义/t
,/nobreak
如果您想禁止用户继续,请添加。psexec
来自 Microsoft SysInternals允许您运行交互式(-i
)作为本地系统(-s
),请注意您必须启动一次 psexec 以接受首次 EULA,或者添加-accepteula
。Y
是你的命令。
runas
不允许您以本地系统启动,这就是为什么要使用 工具用于与流程相关的任务。
启动计划任务或服务对我来说似乎太麻烦了……
例如,帕特里克的回答可以简单地重写为:
timeout /t 120 ; psexec -i -s calc.exe
答案3
这将在 2 分钟内启动 calc.exe。更改
set /A START_MIN=%%j + 2
行来改变时间间隔。
for /f "delims=:. tokens=1,2" %%i in ("%time%") do (
set /A START_HOUR=%%i
set /A START_MIN=%%j + 2
)
IF %START_MIN% GEQ 60 (
call :AdjustStartTime
)
IF %START_MIN% LSS 10 SET START_MIN=0%START_MIN%
SCHTASKS /Create /SC ONCE /TN "My Scheduled Task Name" /RU "" /TR "C:\Windows\System32\Calc.exe" /ST %START_HOUR%:%START_MIN%
:AdjustStartTime
SET /A START_HOUR=%START_HOUR% + 1
SET /A START_MIN=%START_MIN% - 60
GOTO:EOF
答案4
Patrick S. 的回答满足了我的需求。
不过我想说的是,引号后面不需要加上,/TR
但不知什么原因,这似乎破坏了我的脚本。
删除后,他的脚本运行良好!
我的用法是在 Outlook 规则中。调用一个脚本,并使用插件 (messagesave) 将电子邮件写入驱动器。这是从我的办公室电脑发布到网站上,并且调用批处理的原始脚本需要在写入文件之前终止。我花了很长时间才弄清楚如何适当地延迟计划任务,即使在访问“schtasks”TechNet 页面之后也是如此。