2015-02-09 2 views
2

Некоторое время, когда я задал вопрос (и получил блестящий ответ), чтобы создать нижеприведенную программу, я бы просто начал ее запускать, поэтому в командной строке нет отображение в фоновом режиме. В приведенной ниже программе для «Agent.exe» и, если она находит ее, отображается окно с сообщением пользователю о том, что программа закроется за 2 минуты, если они не нажмут ok.Запуск гибридного Java/Batch без отображения командной строки

Теперь

Я наткнулся на этот 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, который ответил на мой первоначальный вопрос с приведенным выше сценарием)

+0

здесь вы можете найти различные способы, как вы можете запустить процесс скрытый http://stackoverflow.com/questions/28284876/what-are-the-different-ways-to-start-a-hidden- process-with-batch-file-and-what-a – npocmaka

ответ

2

Чтобы ответить на ваш вопрос, этот фрагмент VBScript будет работать. Просто сохраните его с расширением .vbs и замените «Программа идет здесь» на путь + имя файла вашего пакетного скрипта. Когда вы дважды щелкните файл 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-файл вместо того, чтобы звучать. :)

+0

звуковой сигнал более раздражает, и он привлекает внимание, агенты оставляют свои столы с гарнитурами, поэтому нам нужно предупредить их, чтобы они вернулись к своим машинам. – Denslat

+0

Ах, очень хорошо. Я снова подал звуковые сигналы.: P – rojo

+0

Ну, благодаря вашему сценарию, который очень легко редактировать, я поместил их обратно в себя – Denslat