Подтвердить что ты не робот

Скрыть командное окно .BAT файла, выполняющего другой .EXE файл

Это пакетный файл в Windows.

Вот мой .bat файл

@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"

"C:\ThirdParty.exe"

Это отлично работает, за исключением того, что .bat файл оставляет окно команды открытым все время, когда запущено приложение "ThirdParty".
Мне нужно закрыть окно команд.

Я бы воспользовался сокращением для приложения, но я должен сначала запустить эту команду копирования (она фактически изменяет базу данных и сервер для использования в приложении).

Приложение ThirdParty не позволяет пользователю изменять источник db или сервера приложений.

Мы делаем это, чтобы пользователи могли перейти от тестовой среды к рабочей среде.

4b9b3361

Ответ 1

Использование start работает для меня:

@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
start C:\ThirdParty.exe

EDIT: Хорошо, более внимательно, start, кажется, интерпретирует первый параметр как новый заголовок окна, если он указан. Итак, если вам нужно указать путь к вашему третьему файлу ThirdParty.exe, вы также должны указать строку заголовка.

Примеры:

:: Title not needed:
start C:\ThirdParty.exe

:: Title needed
start "Third Party App" "C:\Program Files\Vendor\ThirdParty.exe"

Ответ 2

Создайте файл .vbs с этим кодом:

CreateObject("Wscript.Shell").Run "your_batch.bat",0,True

Этот .vbs будет запускать your_batch.bat скрытым.

У меня отлично работает.

Ответ 3

Попробуйте следующее:

@echo off 
copy "C:\Remoting.config-Training" "C:\Remoting.config"
start C:\ThirdParty.exe
exit

Ответ 4

Отличный совет. Он работает с пакетными файлами, в которых также запущена программа java.

start javaw -classpath "%CP%" main.Main

Ответ 5

Использование start отлично работает, если вы не используете язык сценариев. К счастью, есть выход для Python - просто используйте pythonw.exe вместо python.exe:

:: Title not needed:
start pythonw.exe application.py

Если вам нужны кавычки, сделайте следующее:

:: Title needed
start "Great Python App" pythonw.exe "C:\Program Files\Vendor\App\application.py"

Ответ 6

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

Ответ 7

Вам может быть интересно попробовать мою программу silentbatch, которая будет запускать .bat/.cmd script, подавлять полностью создать окно командной строки (так что вы не увидите его, а затем исчезнете) и, при желании, запишите вывод в указанный файл.

Ответ 8

Вы можете создать скрипт VBS, который заставит окно быть скрытым.

Set WshShell = WScript.CreateObject("WScript.Shell")
obj = WshShell.Run("""C:\Program Files (x86)\McKesson\HRS
Distributed\SwE.bat""", 0)
set WshShell = Nothing

Затем вместо выполнения командного файла выполните сценарий.

Ответ 9

Скомпилируйте командный файл в исполняемый файл, используя Batch2Exe http://www.f2ko.de/programs.php?lang=en&pid=b2e. Используйте опцию "Невидимое окно".

Ответ 10

Или вы можете использовать:

Start /d "the directory of the executable" /b "the name of the executable" "parameters of the executable" %1

Если% 1 - это файл, то он передается в ваш исполняемый файл. Например, в notepad.exe foo.txt% 1 - это "foo.txt".

Параметр /b команды запуска делает это:

Запускает приложение, не открывая новое окно командной строки. Обработка CTRL + C игнорируется, если только приложение не разрешает обработку CTRL + C. Используйте CTRL + BREAK, чтобы прервать приложение.

Что именно то, что мы хотим.

Ответ 11

Пожалуйста, используйте этот, выше не работает. Я тестировал в Window Server 2003.

@echo off 
copy "C:\Remoting.config-Training" "C:\Remoting.config"
Start /I "" "C:\ThirdParty.exe"
exit

Ответ 12

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

Ответ 13

Чтобы командное окно файла .bat, который выполняет файл .exe, завершилось как можно быстрее, используйте строку @start перед файлом, который вы пытаетесь выполнить. Вот пример:

(insert other code here)
@start executable.exe
(insert other code here)

Вам не нужно использовать другой код с @start executable.exe.

Ответ 14

Я использовал это для запуска cmd файла из С#:

Process proc = new Process();
proc.StartInfo.WorkingDirectory = "myWorkingDirectory";
proc.StartInfo.FileName = "myFileName.cmd";
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForExit();

Ответ 15

Используя Windows API, мы можем запустить новый процесс, консольное приложение, и скрыть его "черное" окно. Это можно сделать при создании процесса и вообще не показывать "черное" окно.

В CreateProcess функционируют также dwCreationFlags параметр может иметь CREATE_NO_WINDOW флаг:

The process is a console application that is being run
without a console window. Therefore, the console handle
for the application is not set. This flag is ignored if
the application is not a console application

Вот ссылка на исполняемый файл hide-win32-console-window, использующий этот метод и исходный код.

hide-win32-console-window аналогичен программе установки без вывода сообщений Jamesdlin.

Возникает открытый вопрос: что делать с выводом программы, когда ее окно не существует? Что делать, если случаются исключения? Не очень хорошее решение, чтобы выбросить результаты. hide-win32-console-window использует анонимные каналы для перенаправления вывода программы в файл, созданный в текущем каталоге.

использование

batchscript_starter.exe full/path/to/application [аргументы для передачи]

Пример запуска скрипта Python

batchscript_starter.exe c:\Python27\python.exe -c "import time; print('prog start'); time.sleep(3.0); print('prog end');"

Выходной файл создается в рабочем каталоге с именем python.2019-05-13-13-32-39.log с выводом из команды python:

prog start
prog end

Пример работающей команды

batchscript_starter.exe C:\WINDOWS\system32\cmd.exe /C dir .

Выходной файл создается в рабочем каталоге с именем cmd.2019-05-13-13-37-28.log с выводом из CMD:

 Volume in drive Z is Storage
 Volume Serial Number is XXXX-YYYY

 Directory of hide_console_project\hide-win32-console-window

2019-05-13  13:37    <DIR>          .
2019-05-13  13:37    <DIR>          ..
2019-05-13  04:41            17,274 batchscript_starter.cpp
2018-04-10  01:08            46,227 batchscript_starter.ico
2019-05-12  11:27             7,042 batchscript_starter.rc
2019-05-12  11:27             1,451 batchscript_starter.sln
2019-05-12  21:51             8,943 batchscript_starter.vcxproj
2019-05-12  21:51             1,664 batchscript_starter.vcxproj.filters
2019-05-13  03:38             1,736 batchscript_starter.vcxproj.user
2019-05-13  13:37                 0 cmd.2019-05-13-13-37-28.log
2019-05-13  04:34             1,518 LICENSE
2019-05-13  13:32                22 python.2019-05-13-13-32-39.log
2019-05-13  04:55                82 README.md
2019-05-13  04:44             1,562 Resource.h
2018-04-10  01:08            46,227 small.ico
2019-05-13  04:44               630 targetver.h
2019-05-13  04:57    <DIR>          x64
              14 File(s)        134,378 bytes
               3 Dir(s)  ???,???,692,992 bytes free

Пример ярлыка для запуска скрипта .bat

Shortcut for starting windowless .bat file

Target поле:

C:\batchscript_starter.exe C:\WINDOWS\system32\cmd.exe /C C:\start_wiki.bat

Каталог, указанный в поле " Start in будет содержать выходные файлы.