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

Posted

技术标签:

【中文标题】如何在不打开新命令行窗口的情况下使用“schtasks”执行计划任务?【英文标题】:How to execute a scheduled task with "schtasks" without opening a new command line window? 【发布时间】:2011-04-20 06:33:16 【问题描述】:

我有一个批处理文件,它使用 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】:

您可以使用 Windows Shell 脚本扩展在不可见模式下执行批处理文件。

创建一个纯文本文件并将其命名为<scriptname>.vbs

将以下代码粘贴到 .vbs 文件中

  Set WshShell = CreateObject("WScript.Shell") 
  WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0
  Set WshShell = Nothing

根据需要更改批处理文件的名称和路径

保存 .vbs 文件并在 schtasks 中安排相同的时间

【讨论】:

谢谢,我试试这个。但是我仍然想知道是否不可能使用批处理文件... 这不能回答 OP 的问题。正确的解决方案在@mpod 下面的答案中。【参考方案2】:

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

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

因此,试试这个

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

【讨论】:

以上是关于如何在不打开新命令行窗口的情况下使用“schtasks”执行计划任务?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 tkinter 打开控制台窗口的情况下运行 Python 脚本?

在不打开新窗口/标签的情况下使用 Google 身份验证登录

Ubuntu系统下如何在不重启的情况下永久修改hostname主机名

需要在不使用管理工作室的情况下创建新数据库

HTML 如何在不使用函数的情况下从链接打开弹出窗口

vim的使用