Runtime.getRuntime () .exec (), скройте консольный экран

В Ubuntu вы редактируете / etc / apache2 / envvars, как предложил Берри.

Когда вы меняете пользователя Apache, остерегайтесь непредвиденных последствий. Одним из них являются сеансы PHP, которые могут храниться в / var / lib / php5. Возможно, вам также придется изменить владельца этой папки.

5
задан jpalecek 15 June 2009 в 10:35
поделиться

5 ответов

Вы пробовали вариант B для "start"?

proc = Runtime.getRuntime().exec("cmd /c start /B somebat.bat");

Edit:
Хорошо, Аниш, забавно, что ваш код не выполняется.
Я установил модульный тест:

Process proc = null;
    try
    {
        proc = Runtime.getRuntime().exec("cmd /c start /B D:\\temp\\_test\\somebat.bat");
        proc = Runtime.getRuntime().exec("cmd /c call D:\\temp\\_test\\somebat.bat");
        proc = Runtime.getRuntime().exec("D:\\temp\\_test\\somebat.bat");
    }
    catch (IOException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Мой файл somebat.bat выглядит так:

rem somebat.bat:
d:
cd D:\temp\_test
copy somebat.bat somebat2.bat

Все три версии в блоке try выше работают в моем сценарии. Somebat.bat копируется в somebat2.bat без всплывающего окна командной строки (что произойдет, если я использую ваш вызов, указанный в вашем вопросе).

Редактировать 2: Следующий раунд; -)
Аниш, можешь показать нам, как выглядит твой somebat.bat и файл ant?
Поскольку все три приведенных ниже вызова работают в моем сценарии:

тестовый код:

Process proc = null;
proc = Runtime.getRuntime().exec("cmd /c start /B c:\\temp\\_test\\somebat.bat");
proc = Runtime.getRuntime().exec("cmd /c call c:\\temp\\_test\\somebat.bat");
proc = Runtime.getRuntime().exec("c:\\temp\\_test\\somebat.bat");

somebat.bat:

cd\temp\_test  
ant mycopy  

build.xml:

<?xml version="1.0"?>
<project name="testproj" default="mycopy" basedir=".">
  <target name="mycopy">
      <copy file="myfile.txt" tofile="mycopy.txt" />
  </target>
</project>

myfile.txt: произвольный текстовый файл

5
ответ дан 14 December 2019 в 08:58
поделиться

Вы пробовали

start /min "title" "c:\path\batchfile.bat"

Это запустит ваш командный файл без окна. Однако он по-прежнему будет отображаться на панели задач (поскольку он свернут)

0
ответ дан 14 December 2019 в 08:58
поделиться

Добавьте / Q

Runtime.getRuntime().exec( "cmd /c /Q start somebat.bat");
1
ответ дан 14 December 2019 в 08:58
поделиться

Посмотрите это сообщение на форуме . В одном из ответов предлагается использовать сценарий vbs , чтобы скрыть окно.

0
ответ дан 14 December 2019 в 08:58
поделиться

Я не очень хорошо разбираюсь в окнах, но предлагаю вам опустить бит "cmd" в команде. cmd.exe - это терминал Windows. Просто предположение. Найдите другие методы exec (), есть тот, который запускает исполняемый файл команды и аргументы. По крайней мере, в UNIX вы обычно не можете делать ничего, что не поддерживает оболочка (например, передавать вывод в файл), поскольку это функции оболочки, а не выполняемые вызываемой программой. Может быть, поэтому вы обнаружите, что после удаления префикса cmd некоторые вещи не работают.

попробуйте просто:

Process proc = Runtime.getRuntime (). Exec ("somebat.bat");

-2
ответ дан 14 December 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: