//autoStart.bat
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",)(window.close)&&exit
:begin
//上面是添加隐藏黑框框的
//下面是需要执行的命令
::auth: linght
::date: --
::system: windows
::auto start windows exe @set sleepTime=
@set exeName=center_flextrbo.exe
@set logPath=%~dp0 @REM exePath "C:\Program Files (x86)\Jiketong\simpleTrbo\center\"
@set exePath=%logPath:centerAutoRestart=center%
@set runLogPath="%exePath%runLog.log" :loop
@set aTxtfilePath="%logPath%a.txt"
@tasklist | findstr %exeName% > %aTxtfilePath%
@for /f "tokens=3 delims=:" %%a in (' find /c /v "" %aTxtfilePath% ') do @set/a result=%%a+
@if %result% LSS goto reStart
@if %result% equ goto normal
@if %result% gtr goto killExe @echo off
:restart
echo %exeName% is stop RunNum: %result%, auto start %exeName%
rem start your program
set d=%date:~,%
set t=%time:~,%
@set startTxtfilePath="%logPath%start.log"
echo %d% %t%: start /b /d %exePath% %exeName% >> %startTxtfilePath%
REM start /b /d "%exePath%" %exeName% | tee %runLogPath%
ping 0.0.0.0 -n %sleepTime% > "%logPath%null"
start /b /d "%exePath%" %exeName%
> %runLogPath%
@goto sleep :normal
rem echo %exeName% is normal runing...... RunNum: %result%
@goto sleep :killExe
echo %exeName% is running, RunNum: %result%, too mush, kill and restart
taskkill /f /im %exeName% /t
echo auto restart %exeName%
goto reStart
@goto sleep
@echo on :sleep
@echo off
rem sleep 10s
ping 0.0.0.0 -n %sleepTime% > "%logPath%null"
goto loop
echo on :over

这个方法相当巴适,比用vbs调用bat来隐藏黑框框棒多了。

其实,vbs调用bat来隐藏黑框框也还是可以的,不过呢,我遇到的场景是:我用vbs(如:autoStart.bat)调用bat(如:autoStart.bat)来隐藏黑框框。

但是呢,我的bat(如:autoStart.bat)需要增加授予管理员权限运行(看此链接),以便PC机任何用户登录都可以正确的执行。但是呢,我把授权的几行命令加在当前bat最上头的时候啊,bat内部调用程序就变成找不到文件(如上面加粗并标红的start命令)。

这个就恼火了,因为同样的授予管理员权限方式,别的bat(如:start_mysql.bat)就可以好好的运行。

这下啷个办呢,就把授权的命令,单独的保存为一个bat(如:grantAdmin.bat),然后在grantAdmin.bat里调用我的bat(autoStart.bat)。还是用vbs调用bat来隐藏黑框框(如:autoStart.vbs调用grantAdmin.bat)。问题来了,grantAdmin.bat的黑框框确是被隐藏了,autoStart.bat的黑框并没有隐藏,说以啊,在网上找啊找,寻寻觅觅两天时间,终于搞定,那就是用当前这边文章的方法来隐藏黑框框。棒的很。

//grantAdmin.bat
@ echo off
% %
ver|find "5.">nul&&goto :Admin
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas",)(window.close)&goto :eof
:Admin
start autoStart.bat
//autoStart.vbs
public const vbQuote=""""
temp="C:\A_WORK\Release_D1.1.11\SimpleTrbo_Release1012\centerAutoRestart\grantAdmin.bat"
batPath=vbQuote & temp & vbQuote
Set wshell=CreateObject("WScript.Shell")
wshell.Run batPath,,false
Set wshell=Nothing

谢谢你阅读

[小花儿送给你]

bat运行时自己隐藏黑框,而不是用vbs来调用自己的更多相关文章

  1. vbs调用bat 隐藏bat运行时的黑框

    //新建文本文件 ,保存为后缀为bat.如:startBAT.vbs public const vbQuote="""" temp="C:\A_WOR ...

  2. 《Effective C#》读书笔记-1.C# 语言习惯-2.使用运行时常量(readonly)而不是编译时常量(const)

    概念 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言.比如Java只有JVM识 ...

  3. bat运行时不弹出那个黑框框的完美解决方案

    批处理文件运行时经常出现讨厌的黑框,以下的方法,即可以解决 保存为run.vbs运行即可:   set ws = createobject("wscript.shell") ws. ...

  4. 【python基础】python程序打包成.exe运行时会弹出黑框

    用python调用.bat或者.exe文件时,一般调用 方式如下: os.system("C:\Windows\System32\osk.exe") 对吧,这样就会因为调用了系统s ...

  5. word保存时标题变成黑框(mac版本)

    参考:http://blog.sina.com.cn/s/blog_686020310101i2zu.html 参考文档中说的时windows版本的word,跟我mac处理方式有一些不同: word版 ...

  6. iOS开发小技巧--利用运行时得到隐藏的成员变量

    一.关于运行时,已经从网络上摘抄了一片文章,这里只有项目中自己的简单使用 -- 查找隐藏的成员变量 导入头文件 可以获得隐藏的成员变量,方法,属性等 代码: 打印效果图:

  7. 去除FineReport报表点击单元格时出现的黑框

    选择模版->模版web属性 添加加载结束事件,具体代码如下 $("td").bind("click",function(){return false;}) ...

  8. bat批处理文件运行时隐藏cmd窗口

    想让bat运行时隐藏cmd窗口,最好的方法是使用vbs文件实现, 1.新建一个文本文档,改名为123.vbs,编辑内容: set ws=WScript.CreateObject("WScri ...

  9. Android M Permission 运行时权限 学习笔记

    Android M Permission 运行时权限 学习笔记 从Android 6.0开始, 用户需要在运行时请求权限, 本文对运行时权限的申请和处理进行介绍, 并讨论了使用运行时权限时新老版本的一 ...

随机推荐

  1. [No0000143]Win10“卓越性能模式”

    从不久之前Win10更新1803以来,微软不仅带来了一些新功能(和BUG),还悄悄地加入了一个“卓越性能模式”,老张想了想,不对呀,以前就有了一个“高性能模式”,这怎么就还多出个新的性能模式来,难道会 ...

  2. event.stopPropagation(),event.preventDefault()和return false的区别

    event.stopPropagation(),event.preventDefault()和return false的区别 1.event.stopPropagation()方法 这是阻止事件的冒泡 ...

  3. hbase与sqoop的集成

    1.sqoop抽取mysql表到hbase中 export HBASE_HOME=/opt/cdh-5.3.6/hbase-0.98.6-cdh5.3.6 export HADOOP_HOME=/op ...

  4. day2:day1作业 字符编码

    1,使用while循环输出1,2,3,4,5,6,8,9 # 使用while循环输出1,2,3,4,5,6,8,9 num = 1 while num <= 10: if num != 7: p ...

  5. [Day5]方法

    1.方法 (1)概念:方法就是用来完成解决某件事情或实现某个功能的办法 会包含很多条语句用于完成某些有意义的功能 通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(或称调用)该方法 (2) ...

  6. 终端:Xcode模拟器上安装.app方法

    有的时候,我们可能需要将别人的Xcode运行之后的程序包(xxx.app)安装在自己的模拟器上,如下我将介绍如何通过终端来安装. 实现 获取自己Xcode生成的xxx.app steps 1:在工程d ...

  7. eclipse debug模式

    eclipse debug模式 1.怎样在Eclipse中设置断点 方法/步骤 1 首先打开工程项目 2 第一种是,把鼠标移动想要设置断点的行,在行号前面空白地方双击,就会出现断点 3 第二种是,在菜 ...

  8. winform窗体启动过程

    窗体启动执行顺序:FormShowFormPaintFormActivateFormResize 关闭窗体过程FormCloseFormDestroy 最小化再最大化:FormPaintFormRes ...

  9. idea的基本使用

    对于Idea没有workspace的概念,但是它把每个项目都看成是maven的一个模块,在一个idea窗口要想显示多个项目时就和eclipse不太一样,下面会详细介绍. 另外maven的setting ...

  10. 洛谷P3041 视频游戏的连击Video Game Combos [USACO12JAN] AC自动机+dp

    正解:AC自动机+dp 解题报告: 传送门! 算是个比较套路的AC自动机+dp趴,,, 显然就普普通通地设状态,普普通通地转移,大概就f[i][j]:长度为i匹配到j 唯一注意的是,要加上所有子串的贡 ...