robocopy
我有一个计划任务,它启动一个每小时运行的批处理脚本。每次运行时,桌面上都会弹出一个带有 robocopy 输出的窗口,我真的不想看到。
我设法通过使计划的作业运行来使窗口最小化
cmd /c start /min mybat.bat
但这每小时都会给我一个新的命令窗口。鉴于“执行字符串指定的命令然后终止”,我对此感到惊讶cmd /c
- 我一定误解了文档。
有没有办法在不弹出 cmd 窗口的情况下运行批处理脚本?
robocopy
我有一个计划任务,它启动一个每小时运行的批处理脚本。每次运行时,桌面上都会弹出一个带有 robocopy 输出的窗口,我真的不想看到。
我设法通过使计划的作业运行来使窗口最小化
cmd /c start /min mybat.bat
但这每小时都会给我一个新的命令窗口。鉴于“执行字符串指定的命令然后终止”,我对此感到惊讶cmd /c
- 我一定误解了文档。
有没有办法在不弹出 cmd 窗口的情况下运行批处理脚本?
您可以改用 Windows 脚本文件以静默方式运行它。运行方法允许您在不可见模式下运行脚本。创建一个
.vbs
像这样的文件并安排它。此示例中的第二个参数设置窗口样式。0 表示“隐藏窗口”。
Run 方法的完整语法:
论据:
您是否将其作为计划任务运行?如果将其设置为作为不同的用户帐户运行,则登录用户将看不到它。如果脚本不需要网络访问需要 Windows 身份验证的项目(如文件共享或打印机),您可以将其作为“nt authority\system”运行并将密码留空。在 Windows 7 上,只需将用户设置为 SYSTEM,然后按 OK。
(如果您使用的是 robocopy,您可能必须使用真实用户......)
JR
只需将计划任务配置为“无论用户是否登录都运行”。
您也可以尝试CHP (Create hidden process),完全按照您的想法...
在没有命令窗口的情况下运行。完美的!由与 CMDOW 相同的人制作,但这样更合适。
CMDOW是一个很棒的工具,它允许你从命令行对窗口做很多很多事情。
最简单的事情之一是隐藏当前窗口(通常作为 bat 文件中的第一行):
或开始一个新的隐藏进程
您可以创建批处理文件的快捷方式,将快捷方式设置为最小化启动(在快捷方式的属性“快捷方式”选项卡中),然后将作业设置为启动快捷方式。
重要提示:您需要手动指定快捷方式的路径,方法是在“运行”文本字段中键入快捷方式,并加上“.lnk”扩展名;如果您只是尝试浏览它,它将有助于将自己重定向到快捷方式指向的任何位置。
尝试调用脚本
我意识到这个问题已经用 Windows 原生的完美解决方案得到了回答,因此应该是最兼容的,我完全同意。
我还想说我不同意@splattne 的评论(但不是他的实际回答)——另一个引用线程中的解决方案值得称赞。该答案涉及以其他用户 (SYSTEM) 身份运行脚本,这几乎等同于授予脚本 root 访问权限。
ROBOCOPY
对于需要网络访问的作业(如 John Rennie 所引用的),它也会失败。我以前从未尝试
CMDOW
过,但我想提供另一种类似的分辨率,[虽然不是在 Windows 上原生安装] 对于大多数版本来说仍然是高度可移植的,并且有 32 位和 64 位版本,那就是尼尔命令。NirCmd 是一个非常强大的工具,它有无数的选项,其中最有用的,我个人认为它能够通过简单地执行以下命令来启动隐藏的命令窗口:
从NirCmd 命令参考
exec
部分:运行应用程序,并可选择为已执行的应用程序指定一个或多个命令行参数。[show/ hide /min/max] 参数指定正在运行的应用程序是否可见。如果指定了“隐藏”,则用户将看不到正在运行的应用程序。如果指定了“max”,则正在运行的应用程序窗口将被最大化。如果指定了“min”,则正在运行的应用程序窗口将被最小化。
编辑: 我试图运行一项
ROBOCOPY
工作并尝试了这个答案中的方法,但它没有工作,即使在编辑网络访问权限之后也是如此。我尝试双击脚本,但无法让它工作,但只能让它在提升的命令提示符下运行。我确实创建了批处理文件的快捷方式并让它以管理员身份运行,并且能够通过双击它来执行它,但我最终采用的方法是将它隐藏为 SYSTEM(我知道,我知道) - 但ROBOCOPY
只要批处理文件具有正确的权限,它就可以与 .编辑 2: 由于某种原因,它不能作为 SYSTEM 工作(可能是前面提到的网络访问的东西)——我只是在
ROBOCOPY
没有 /L 标志的情况下实际运行后才注意到这一点,这基本上只是一个模拟,[显然]没有实际上连接到远程系统,但是当我以最高权限运行批处理文件并选中隐藏框时,我仍然可以在后台以登录用户身份运行它而不会显示命令窗口,无论这对任何人来说都是值得的.我使用的另一个解决方案是隐藏开始
尝试在批处理文件的末尾输入退出命令。脚本完成后,这应该关闭命令窗口。