转自:http://itindex.net/detail/38012-bat-%E6%B5%8F%E8%A7%88%E5%99%A8-%E7%A8%8B%E5%BA%8F
在电脑启动时或者设置时间时运行指定的程序很容易实现。但是有时候还需要运行时不显示主界面,隐藏到后台运行。比如:开机时一段Bat批处理执行删除默认共享; 开机自动运行浏览器隐藏到后代打开指定网页等,希望所有的操作对用户都是不可见的。如果你也有这样的需求,这里我收集了几个让批处理、浏览器等程序隐藏到运行的方法或许可以帮到你。
- 方法一: HideRun.vbs脚本文件
代码:CreateObject("WScript.Shell").Run "cmd /c D:test.bat",0
把以上代码复制到文本文件中,保存为.vbs文件(比如 HideRun.vbs),其中 D:test.bat 为你要运行的批处理文件,下同。
- 方法二: HideRun.bat批处理文件
代码:
echo CreateObject("WScript.Shell").Run "cmd /c D:test.bat",0>$tmp.vbs cscript.exe /e:vbscript $tmp.vbs del $tmp.vbs
或者:
mshta vbscript:CreateObject("WScript.Shell").Run("iexplore http://luckerme.com",0)(window.close)
以上代码选一个复制到文本文件中,修改自定义的内容保存为.bat文件(比如 HideRun.bat)。
- 方法三: HideRun.js文件
代码:
new ActiveXObject(‘WScript.Shell‘).Run(‘cmd /c D:Test.bat‘,0);
把以上代码复制到文本文件中,保存为.js文件(比如 HideRun.js)。Javascript的字符串变量可以用单引号,从而方便命令行作为参数调用,而且js很好的支持多行语句用 ; 分隔写成一行。要注意的是:js要区分大小写,方法必须用括号,结尾必须有分号。所以写成命令行就是:
mshta "javascript:new ActiveXObject(‘WScript.Shell‘).Run(‘cmd /c D:test.bat‘,0);window.close()"
- 方法四: 使用系统服务
代码:
runassrv add /cmdline:"C:WindowsSystem32cmd.exe /c D:test.bat" /name:"myservicesname" net start myservicesname
可以用sc建立一个系统服务然后启动这个服务来启动批处理。缺点是启动服务较慢,需要管理员权限。
- 方法五: 使用at计划任务
代码:
at 09:00 "cmd /c D:Test.bat"
用at可以建立一个计划任务,在不输入 /interactive 参数可以后台运行。使用at必须有管理员权限。然后在系统就会自动后台以SYSTEM权限运行这个bat。
- 方法六:使用第三方软件
今天搜索时找到了一款名为HOU任务计划(OnTimer.exe)的定时/循环执行任务的绿色小软件。软件虽小,功能很大。可以用来定时执行程序、DOS命令、从HTTP服务器下载程序运行、结束进程、模拟按键、发送EMAIL、网络唤醒、消息提示、关机、重启、注销、锁定、待机等操作。其中普通运行、参数运行、 执行DOS “备注”开头为“-h”则隐藏执行,即可满足我们的需求。相信的介绍及下载可以到软件的官方页面: http://www.yryz.net/soft-OnTimer.htm
上边五种方法简单方便,都是系统的功能,无需额外的软件。但是,自己创建的bat,vbs文件可能会被杀毒软件误报误删,所有设置好后最好手动加入到杀毒软件的信任列表。目前我使用的是最后一种方法,借助OnTimer.exe这个小软件,配置方便。而且,加入启动项后,360检查开机项目时不会提示禁止,在系统检查修复界面也不会检测到非安全项。其他杀软未测试。你可以都测试下,采用适合的方法实现隐藏运行程序的功能。