启动Java / Batch混合而不显示命令提示符

时间:2015-02-09 13:55:53

标签: batch-file vbscript jscript

我问了一个问题(得到了一个精彩的回答)来创建下面的程序,我想要的是默默地启动它,所以命令提示符不会在后台显示。 下面的程序测试" Agent.exe"如果找到它,会向用户显示一个消息框,告诉他们程序将在2分钟后关闭,除非他们按下确定。

现在

我遇到了这个VBS脚本

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "Program goes here" & Chr(34), 0
Set WshShell = Nothing

但没有最简单的线索将它与我的剧本结合起来

@if (@CodeSection == @Batch) @then
setlocal
for /f %%I in ('forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo 0x07"') do set "beep=%%I"
set /P "=%beep%"<NUL
set /P "=%beep%"<NUL
set /P "=%beep%"<NUL
setlocal
set "task=agent.exe"
set "timeout=120"
rem // Is %task% running?
tasklist /fi "imagename eq %task%" | find /i "%task%" >NUL && (

    rem // Re-launch script with JScript interpreter
    wscript /e:JScript /nologo "%~f0" %timeout% || (
        rem // If timeout or user hits No, kill %task%
        taskkill /im "%task%" /f
    )
)

rem // End main runtime

goto :EOF

rem // Begin JScript portion
@end
var osh = WSH.CreateObject('WScript.Shell'),
    nag = 'Greetings!  Your administrator has requested you to log out of Program '
        + 'after work.  It appears you are still using it.'
        + ' If you are still here, Press Yes to continue working.\n\n'
        + 'Otherwise, press no to close Program.'
        + 'Program will close automatically in less than ' + WSH.Arguments(0) + ' seconds.';
    popup = osh.Popup(nag, WSH.Arguments(0), 'Are you still here?', 0x4 + 0x20 + 0x1000);
WSH.Quit(popup - 6);

有人有什么想法吗? (向Rojo致敬,他用上面的剧本回答了我的初步问题)

1 个答案:

答案 0 :(得分:2)

要回答您的问题,该VBScript代码段将有效。只需使用.vbs扩展名保存,然后替换&#34;程序就在这里&#34;使用批处理脚本的路径+文件名。当您双击vbs文件或使用wscript /nologo "path\to\vbsfile"执行它时,它将隐藏批处理脚本(没有控制台窗口),但弹出窗口仍然会出现。


如果您希望将所有代码保存在单个文件中,则可以调用powershell -windowstyle hidden来隐藏窗口。您仍会看到黑色窗口一秒钟,但在弹出窗口出现之前它会消失。

@if (@CodeSection == @Batch) @then
setlocal

rem // hide current window
powershell -windowstyle hidden -command ""

for /f %%I in ('forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo 0x07"') do set "beep=%%I"
set /P "=%beep%"<NUL
set /P "=%beep%"<NUL
set /P "=%beep%"<NUL

set "task=agent.exe"
set "timeout=120"
rem // Is %task% running?
tasklist /fi "imagename eq %task%" | find /i "%task%" >NUL && (

    rem // Re-launch script with JScript interpreter
    wscript /e:JScript /nologo "%~f0" %timeout% || (
        rem // If timeout or user hits No, kill %task%
        taskkill /im "%task%" /f
    )
)

rem // if not in a self-destructing window, re-show
set "caller=%cmdcmdline:"=%"
if /I not "%caller:~0,6%"=="cmd /c" powershell -windowstyle normal -command ""

rem // End main runtime
goto :EOF

rem // Begin JScript portion
@end
var osh = WSH.CreateObject('WScript.Shell'),
    nag = 'Greetings!  Your administrator has requested you to log out of the Cisco '
        + 'Agent Desktop after work.  It appears you are still using it.  If you '
        + 'are still here, Press Yes to continue working.\n\n'
        + 'Otherwise, press No to close the agent.  Agent will close automatically '
        + 'in less than ' + WSH.Arguments(0) + ' seconds.',

popup = osh.Popup(nag, WSH.Arguments(0), 'Are you still here?', 0x4 + 0x20 + 0x1000);

WSH.Quit(popup - 6);

收到并赞赏。我仍然认为你应该播放一个俗气的midi文件而不是嘟嘟声。 :)