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(任务计划程序)服务(即“本地系统”帐户)的安全上下文下运行。在RUNAS
BAT 文件之前添加命令和开关应该可以解决该问题。
答案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.vbs
schtasks