Answers:
您可以改为使用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])
参数:
您是否将此作为计划任务运行?如果这样,则将其设置为以其他用户帐户运行,那么登录的用户将看不到它。如果脚本不需要网络访问需要Windows身份验证的项目(例如文件共享或打印机),则可以将其作为“ nt Authority \ system”运行,并将密码保留为空。在Windows 7上,只需将用户设置为SYSTEM,然后按OK。
(如果您正在使用robocopy,则可能必须使用真实用户。)
JR
CMDOW是一个了不起的工具,它使您可以从命令行对Windows执行许多操作。
最简单的操作之一是使用以下命令隐藏当前窗口(通常作为bat文件的第一行):
cmdow @ /hid
或开始一个新的隐藏过程
cmdow /run /hid mybat.bat
尝试使用调用脚本
start /b <command>
start
不是程序,所以是命令。您需要指定cmd
作为要运行的程序和/c start /b <file>
参数。但是,这仍然行不通,因为它仍将为它创建一个控制台窗口cmd
并在屏幕上闪烁一个黑色窗口。
您可以创建批处理文件的快捷方式,将快捷方式设置为最小化开始(在快捷方式的属性中,“快捷方式”选项卡),然后将作业设置为启动快捷方式。
重要提示:您需要通过在“运行”文本字段中键入快捷方式的路径来手动指定快捷方式的路径,并以'.lnk'扩展名完成;如果你只是试图浏览它,它会帮忙,自己重定向到任何快捷方式指向。
我意识到这个问题已经以Windows固有的完美分辨率解决了,因此应该是最兼容的,我完全同意。
我还想说我不同意@splattne的评论(但不是他的实际答案)-另一个引用线程中的分辨率值得赞扬。该答案涉及以其他用户身份(SYSTEM)运行脚本,这几乎等同于授予脚本root用户访问权限。对于诸如ROBOCOPY
需要进行网络访问的工作(如John Rennie所引用),它也将失败。
我以前从未尝试CMDOW
过,但是我想提供另一个类似的解决方案,尽管该解决方案虽然不是Windows上的本地安装,但仍可移植到大多数版本,并且有32位和64位版本,这就是NirCmd。
NirCmd是一个非常强大的工具,具有许多选项,其中最有用的是我个人认为的功能,它只需执行以下命令即可启动隐藏的命令窗口:
c:\path\to\nircmd.exe exec hide "c:\path\to\mybat.bat"
从exec
部分中的NirCmd命令参考:
exec [show/hide/min/max] [application + command-line]
运行一个应用程序,并为执行的应用程序指定一个或多个命令行参数。[show / hide / min / max]参数指定正在运行的应用程序是否可见。如果指定了“隐藏”,则用户将看不到正在运行的应用程序。如果指定“ max”,则正在运行的应用程序窗口将最大化。如果指定“ min”,则正在运行的应用程序窗口将最小化。
编辑:
我正在尝试运行ROBOCOPY
作业,并尝试了此答案中的方法,即使编辑了网络访问权限后,它也无法正常工作。我尝试双击该脚本,无法使其正常运行,但只能使其在提升的命令提示符下运行。我确实创建了一个批处理文件的快捷方式,并使其以管理员身份运行,并且能够通过双击该文件来执行它,但是最终使用的方法是将其隐藏为SYSTEM(我知道,我知道) -但ROBOCOPY
只要批处理文件具有正确的权限,它就可以与配合使用,以实现其价值。
编辑2:
由于某种原因,它不能作为系统工作(可能是前面提到的网络访问)-我只是在实际运行后ROBOCOPY
没有/ L标志的情况下才注意到这一点,这基本上只是一个模拟,[显然]并没有实际连接到远程系统,但是当我以最高特权运行批处理文件并选中隐藏框时,我仍然可以在后台以登录用户身份运行它,而不会显示命令窗口,无论任何人都值得这样做。