如何使用“schtasks”执行计划任务而不打开新的命令行窗口?

如何使用“schtasks”执行计划任务而不打开新的命令行窗口?

schtasks我有一个批处理文件,它使用如下方式创建计划任务:

schtasks /create /tn my_task_name 
                 /tr "...\my_path\my_task.bat"
                 /sc daily
                 /st 10:00:00 
                 /s \\my_computer_name 
                 /u my_username    
                 /p my_password

一切正常,除了my_task.bat执行时会打开一个新的命令行窗口(执行后关闭)。

我想避免打开这个新窗口(即在后台以安静模式运行任务)。

我想用

start /b ...\my_path\my_task.bat

但我不知道如何操作,因为我必须start从批处理文件中调用,所以我需要在它前面加上cmd /c,这会再次导致新窗口打开。

我该如何解决这个问题?

答案1

我认为您之所以看到该框,是因为您设置的运行帐户是您自己的帐户。请尝试以下任一操作:

1:以用户 NT Authority\System 身份运行任务

2:创建一个新帐户并设置使用其凭据运行的任务

答案2

您可以通过为 schtasks 指定 /RU 选项来执行此操作。此选项

指定运行任务的用户帐户(用户上下文)。对于系统帐户,有效值为“”、“NT AUTHORITY\SYSTEM”或“SYSTEM”。

因此,尝试一下

schtasks /create /tn my_task_name 
                  ....
                 /st 10:00:00 
                 /ru "SYSTEM"
                 ....

答案3

也许使用该AT命令但不包含/interactive开关。

例子:
AT \\my_computer_name 10:00AM /EVERY:M,T,W,Th,F,S,Su "...\my_path\my_task.bat"

如果你需要特定的凭据来运行 my_task.bat,那么你可能必须输入RUNAS命令,因为我相信该命令将在 Schedule(任务计划程序)服务(即“本地系统”帐户)的安全上下文下运行。在RUNASBAT 文件之前添加命令和开关应该可以解决该问题。

答案4

最后我使用这个代码解决了这个问题:

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "...\my_task.bat" & Chr(34), 0
Set WshShell = Nothing

已保存并按上述方式run_my_task.vbs安排。run_my_task.vbsschtasks

相关内容