AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 9038
Accepted
Tom Dunham
Tom Dunham
Asked: 2009-05-18 01:00:51 +0800 CST2009-05-18 01:00:51 +0800 CST 2009-05-18 01:00:51 +0800 CST

在没有窗口的计划任务中运行 .bat 文件

  • 772

robocopy我有一个计划任务,它启动一个每小时运行的批处理脚本。每次运行时,桌面上都会弹出一个带有 robocopy 输出的窗口,我真的不想看到。

我设法通过使计划的作业运行来使窗口最小化

cmd /c start /min mybat.bat

但这每小时都会给我一个新的命令窗口。鉴于“执行字符串指定的命令然后终止”,我对此感到惊讶cmd /c- 我一定误解了文档。

有没有办法在不弹出 cmd 窗口的情况下运行批处理脚本?

windows scripting scheduled-task command-line-interface windows-command-prompt
  • 11 11 个回答
  • 330664 Views

11 个回答

  • Voted
  1. Best Answer
    splattne
    2009-05-18T01:08:16+08:002009-05-18T01:08:16+08:00

    您可以改用 Windows 脚本文件以静默方式运行它。运行方法允许您在不可见模式下运行脚本。创建一个.vbs像这样的文件

    Dim WinScriptHost
    Set WinScriptHost = CreateObject("WScript.Shell")
    WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
    Set WinScriptHost = Nothing
    

    并安排它。此示例中的第二个参数设置窗口样式。0 表示“隐藏窗口”。

    Run 方法的完整语法:

     object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
    

    论据:

    • 对象:WshShell 对象。
    • strCommand:字符串值,指示要运行的命令行。您必须包含要传递给可执行文件的任何参数。
    • intWindowStyle:可选。指示程序窗口外观的整数值。请注意,并非所有程序都使用此信息。
    • bWaitOnReturn:可选。布尔值,指示脚本是否应等待程序完成执行,然后再继续执行脚本中的下一条语句。如果设置为 true,脚本执行将暂停,直到程序完成,并且 Run 返回程序返回的任何错误代码。如果设置为 false(默认),则 Run 方法在启动程序后立即返回,自动返回 0(不被解释为错误代码)。
    • 162
  2. John Rennie
    2009-05-18T01:13:51+08:002009-05-18T01:13:51+08:00

    您是否将其作为计划任务运行?如果将其设置为作为不同的用户帐户运行,则登录用户将看不到它。如果脚本不需要网络访问需要 Windows 身份验证的项目(如文件共享或打印机),您可以将其作为“nt authority\system”运行并将密码留空。在 Windows 7 上,只需将用户设置为 SYSTEM,然后按 OK。

    (如果您使用的是 robocopy,您可能必须使用真实用户......)

    JR

    • 63
  3. Peter Meinl
    2012-10-05T12:06:36+08:002012-10-05T12:06:36+08:00

    只需将计划任务配置为“无论用户是否登录都运行”。

    • 39
  4. rocketmonkeys
    2010-07-21T13:54:28+08:002010-07-21T13:54:28+08:00

    您也可以尝试CHP (Create hidden process),完全按照您的想法...

    CHP.EXE mybat.bat

    在没有命令窗口的情况下运行。完美的!由与 CMDOW 相同的人制作,但这样更合适。

    • 19
  5. itsadok
    2009-05-18T03:30:26+08:002009-05-18T03:30:26+08:00

    CMDOW是一个很棒的工具,它允许你从命令行对窗口做很多很多事情。

    最简单的事情之一是隐藏当前窗口(通常作为 bat 文件中的第一行):

    cmdow @ /hid
    

    或开始一个新的隐藏进程

    cmdow /run /hid mybat.bat 
    
    • 10
  6. Doug Kavendek
    2011-08-12T08:49:45+08:002011-08-12T08:49:45+08:00

    您可以创建批处理文件的快捷方式,将快捷方式设置为最小化启动(在快捷方式的属性“快捷方式”选项卡中),然后将作业设置为启动快捷方式。

    重要提示:您需要手动指定快捷方式的路径,方法是在“运行”文本字段中键入快捷方式,并加上“.lnk”扩展名;如果您只是尝试浏览它,它将有助于将自己重定向到快捷方式指向的任何位置。

    • 6
  7. rashfeather
    2009-05-18T06:54:29+08:002009-05-18T06:54:29+08:00

    尝试调用脚本

    start /b <command>
    
    • 4
  8. rubynorails
    2016-05-01T19:38:50+08:002016-05-01T19:38:50+08:00

    我意识到这个问题已经用 Windows 原生的完美解决方案得到了回答,因此应该是最兼容的,我完全同意。

    我还想说我不同意@splattne 的评论(但不是他的实际回答)——另一个引用线程中的解决方案值得称赞。该答案涉及以其他用户 (SYSTEM) 身份运行脚本,这几乎等同于授予脚本 root 访问权限。ROBOCOPY对于需要网络访问的作业(如 John Rennie 所引用的),它也会失败。

    我以前从未尝试CMDOW过,但我想提供另一种类似的分辨率,[虽然不是在 Windows 上原生安装] 对于大多数版本来说仍然是高度可移植的,并且有 32 位和 64 位版本,那就是尼尔命令。

    NirCmd 是一个非常强大的工具,它有无数的选项,其中最有用的,我个人认为它能够通过简单地执行以下命令来启动隐藏的命令窗口:

    c:\path\to\nircmd.exe exec hide "c:\path\to\mybat.bat"
    

    从NirCmd 命令参考exec部分:

    exec [show/hide/min/max] [application + command-line]
    

    运行应用程序,并可选择为已执行的应用程序指定一个或多个命令行参数。[show/ hide /min/max] 参数指定正在运行的应用程序是否可见。如果指定了“隐藏”,则用户将看不到正在运行的应用程序。如果指定了“max”,则正在运行的应用程序窗口将被最大化。如果指定了“min”,则正在运行的应用程序窗口将被最小化。

    编辑: 我试图运行一项ROBOCOPY工作并尝试了这个答案中的方法,但它没有工作,即使在编辑网络访问权限之后也是如此。我尝试双击脚本,但无法让它工作,但只能让它在提升的命令提示符下运行。我确实创建了批处理文件的快捷方式并让它以管理员身份运行,并且能够通过双击它来执行它,但我最终采用的方法是将它隐藏为 SYSTEM(我知道,我知道) - 但ROBOCOPY只要批处理文件具有正确的权限,它就可以与 .

    编辑 2: 由于某种原因,它不能作为 SYSTEM 工作(可能是前面提到的网络访问的东西)——我只是在ROBOCOPY没有 /L 标志的情况下实际运行后才注意到这一点,这基本上只是一个模拟,[显然]没有实际上连接到远程系统,但是当我以最高权限运行批处理文件并选中隐藏框时,我仍然可以在后台以登录用户身份运行它而不会显示命令窗口,无论这对任何人来说都是值得的.

    • 2
  9. SteveC
    2015-07-01T23:38:46+08:002015-07-01T23:38:46+08:00

    我使用的另一个解决方案是隐藏开始

    • 0
  10. Brian S. Wilson
    2013-08-14T03:58:46+08:002013-08-14T03:58:46+08:00

    尝试在批处理文件的末尾输入退出命令。脚本完成后,这应该关闭命令窗口。

    • -2

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve