Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программное обеспечение Windows (http://forum.oszone.net/forumdisplay.php?f=7)
-   -   Как скрыть окно в котором выполняется пакетный файл (*.bat или *.cmd)? (http://forum.oszone.net/showthread.php?t=42879)

Shaytan 22-12-2004 16:55 282416

Как скрыть окно в котором выполняется пакетный файл (*.bat или *.cmd)?
 

Bat To Exe Converter - Freeware - 390 КБ
Преобразует .bat файлы в .exe
Гибкие настройки программы.


Здравствуйте. Есть bat-файл, в котором есть цикл, и он постоянно крутится в памяти. Можно ли сделать так, чтоб при этом не отображалось окно CMD, в котором, собствено и отображается все действо. Т.е. можно ли это окно CMD убрать с экрана, чтоб оно не мешало? Заранее спасибо.

kaddy 22-12-2004 21:18 282488

ну его можно просто свернуть.
его можно свернуть и спрятать панель инструментов
это окно можно переместить за пределы монитора (правой клавишей - переместить)

[mzd] 22-12-2004 21:40 282497

Можно с помощью спец. программ принудительно свернуть его в трей.

Skubent 30-12-2004 15:59 284710

Создай своему BAT-у ярлык, в свойствах укажи - Выполнять в свёрнутом окне. Правда я не помню как на это 2k/XP/NT реагируют, но по моему работало. Само в панель задач падает.

hasherfrog 30-12-2004 16:09 284716

В "Программировании" посмотрите мою тему "Скрываем чужую консоль". Там всё написано. Ваш случай.

mar 30-12-2004 17:26 284732

или скрывать командную строку, ипользуя готовые утилиты. Вот тут Vadikan писал, как это делать при помощи cmdow

hasherfrog 30-12-2004 17:42 284737

>>или скрывать командную строку, ипользуя готовые утилиты
http://forum.oszone.net/showthread.php?t=29630

mar 30-12-2004 18:31 284747

hasherfrog
:super: извини, не посмотрела. Действительно - простенько и со вкусом :)

hasherfrog 30-12-2004 22:49 284784

Самое смешное, что всё тоже самое делается не с помощью cmd и моей приблуды, а банальнейшим start /b ляляля.bat
ЕМНИП.
Мораль: читайте хелпы не только в линукс, но и в виндах.

mar 31-12-2004 00:01 284795

хм, а у меня выдает:
Цитата:

C:\Program Files\Far>start
Запуск программы Windows или MS-DOS.

START [параметры] программа [аргументы...]
START [параметры] документ.расш

/m[inimized] Запуск программы в свернутом окне (фоновый режим).
/max[imized] Запуск программы в развернутом окне (основной процесс).
/r[estored] Запуск программы в стандартном окне (используется по умолчанию).
/w[ait] Отложить запуск до завершения предыдущей программы.

hasherfrog 31-12-2004 00:17 284797

Код:

Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\hasher>cd\

C:\>start /?
Запуск указанной программы или команды в отдельном окне.

START ["заголовок"] [/Dпуть] [/i] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME| /ABOVENORMAL | /BELOWNORMAL]
      [/WAIT] [/b]
      [команда/программа] [параметры]

    "заголовок" Заголовок окна.
    путь        Рабочий каталог.
    B          Запуск приложения без создания нового окна с отключением
                обработки сочетания клавиш ^C. Если приложение не
                обрабатывает сочетание клавиш ^C самостоятельно,
                единственным способом его прерывания является
                использование сочетания клавиш ^Break.
    I          Новой средой станет исходная среда, переданная
                cmd.exe, а не текущая среда.
    MIN        Запуск команды/программы в свернутом окне.
    MAX        Запуск команды/программы в развернутом окне.
    SEPARATE    Запуск 16-разрядной программы Windows в отдельной
                области памяти.
    SHARED      Запуск 16-разрядной программы Windows в общей
                области памяти.
    LOW        Запуск приложения с приоритетом IDLE.
    NORMAL      Запуск приложения с приоритетом NORMAL.
    HIGH        Запуск приложения с приоритетом HIGH.
    REALTIME    Запуск приложения с приоритетом REALTIME.
    WAIT        Запуск приложения с ожиданием его завершения.
    ABOVENORMAL Запуск приложения с классом приоритета ABOVENORMAL
    BELOWNORMAL Запуск приложения с классом приоритета BELOWNORMAL
    команда/программа
                Если это внутренняя команда cmd.exe или пакетный файл,
                обработчик команд (cmd.exe) запускается с ключом /K.
                Это означает, что окно не будет закрыто после завершения
                команды.

                Если это не внутренняя команда cmd.exe и не пакетный файл,
                значит, это программа, которая будет запущена в графическом
                или текстовом окне.

    параметры  Параметры, передаваемые команде/программе.


Изменения вызова внешних команд из командной строки или с помощью команды
START при включении расширенной обработки команд:

Для вызова неисполняемых файлов через механизм сопоставления типов файлов
    достаточно просто ввести имя файла в командной строке.  Например, команда
    WORD.DOC запускает приложение, сопоставленное расширению имени файла .DOC.
    Сведения о создании подобных сопоставлений из пакетных файлов приведены
    в описаниях команд ASSOC и FTYPE.

При запуске 32-разрядного приложения с графическим интерфейсом пользователя
    обработчик команд CMD.EXE не ожидает завершения работы приложения перед
    возвратом к приглашению командной строки.  Подобное новое поведение НЕ
    относится к запуску приложений из пакетных файлов.

При выполнении командной строки, первым элементом которой является текстовая
    строка "CMD" без расширения имени файла или указания пути, она заменяется
    значением переменной COMSPEC. Это предотвращает запуск CMD.EXE из
    текущей активной папки, если таковая программа там имеется.

Если первый элемент командной строки не содержит расширения имени файла,
    обработчик команд CMD.EXE использует значение переменной среды PATHEXT,
    чтобы определить расширения имен исполняемых файлов и порядок поиска
    нужного файла.  По умолчанию для переменной PATHEXT задается
    значение:

        .COM;.EXE;.BAT;.CMD

    Обратите внимание, что этот синтаксис подобен синтаксису для переменной
    PATH, то есть отдельные элементы разделяются точкой с запятой.

Если при поиске исполняемого файла нет соответствия ни одному из расширений,
выполняется проверка соответствия указанного имени папки. Если имя папки
соответствует указанному, то команда START запускает EXPLORER для этого
пути. Если такое действие выполняется из командной строки, то оно
эквивалентно выполнению команды CD /D для указанного пути.

C:\>


ох и наспамил...

mar 31-12-2004 00:39 284803

а то, что у меня - от 98SE :)

hasherfrog 31-12-2004 00:48 284808

неожиданное применение ;)

Vadikan 31-12-2004 05:53 284847

hasherfrog
Xoрошая находка, только я что-то не пойму где там скрытие окна... Я запускаю несколько файлов батником типа
Код:

@echo off
start /b F:\data\file1.doc
start /b F:\data\file2.doc
start /b excel

EXIT

Но окно-то все равно висит пока команды исполняются. Файлики-то на сетевом диске, открываются не сразу. А вот если я первой строкой добавлю cmdow @ /HID имея утилиту cmdow.exe в %windir%\system32, то окно появляется лишь на миг, и сразу исчезает, в то время как команды все еще выполняются.

mrcnn 31-12-2004 06:10 284850

Shaytan
Цитата:

Здравствуйте. Есть bat-файл, в котором есть цикл, и он постоянно крутится в памяти. Можно ли сделать так, чтоб при этом не отображалось окно CMD, в котором, собствено и отображается все действо. Т.е. можно ли это окно CMD убрать с экрана, чтоб оно не мешало? Заранее спасибо.
Создаем элементарную консольную программу на С:
Определяем hwnd данного консольного окна: hwnd=GetForegroundWindow();
Запускаем батник в данном окне, например: system("mybatfile.bat");
вызываем функцию ShowWindow(hwnd, SW_HIDE); Окна нет на экране. Кстати то же самое можно проделать для любого окна в системе.

Полный текст:
Код:

#include <windows.h>

void main(){

HWND hwnd;
hwnd=GetForegroundWindow();
ShowWindow(hwnd, SW_HIDE);
system("mybatfile.bat");
ExitProcess(0);
}


hasherfrog 31-12-2004 12:04 284874

Vadikan
Цитата:

Xoрошая находка, только я что-то не пойму где там скрытие окна...
Очевидно, небольшая путаница из пары тем? ;-)
В данном случае (для этой темы) - решение в запуске самого батника с помощью start /b, а не использование start /b в батнике.

Цитата:

то окно появляется лишь на миг, и сразу исчезает
Ууу, это вообще не вариант. Не хватало, чтобы "моргало" чего-то перед носом. Хотя, на вкус и цвет...

Vadikan 31-12-2004 23:03 284961

hasherfrog
Цитата:

Очевидно, небольшая путаница из пары тем? ;-)
Наверное...
Цитата:

В данном случае (для этой темы) - решение в запуске самого батника с помощью start /b,
Хм, я все равно не понимаю. Я, вообще, уже с трудом понимаю мануалы и справки на русском языке, так что я перечитал ключи start на английском ;-) И вижу я, что просто новое окно cmd открываться не будет. Ну и что? Откуда ты батник запускаешь? Из командной строки? Ну так исходное окно все-равно остается и точно также висит и вообще не закрывается после отработки батника. Так в чем соль?

hasherfrog 01-01-2005 20:21 285081

Vadikan
Создайте ярлык на открытие a.txt (сам файл должен сущесвовать - это для примера).
В свойствах укажите
%comspec% /c a.txt
А теперь поменяйте на
%comspec% /c start /b a.txt
В первом случае окно висит, во втором - нет.

Хотя я уже сам стал запутываться, что, зачем и почему 8-P

Vadikan 01-01-2005 20:59 285090

hasherfrog
Цитата:

В первом случае окно висит, во втором - нет.
Оно не висит, но отображается же на какой-то момент при запуске ;-) В общем, условие задачи сформулировано так
Цитата:

Есть bat-файл, в котором есть цикл, и он постоянно крутится в памяти. Можно ли сделать так, чтоб при этом не отображалось окно CMD, в котором, собствено и отображается все действо.
Можно решить твоим способом
Код:

%comspec% /c start /b filename.bat
можно моим
Код:

cmdow @ /HID
@echo off
start filename.bat
EXIT

ну а метод mrcnn я не проверял.

hasherfrog 01-01-2005 22:58 285108

Ну и первым моим
Код:

hideconsole.exe filename.bat
До кучи, так сказать. ;-) Единственный метод, который "не моргает".
Вывод: тему занести в ФАК, для будущих поколений.

mrcnn 02-01-2005 16:40 285248

Цитата:

метод mrcnn я не проверял.
Вот бинарник. Можете проверить и мой метод.
Способ использования: hider command-file-name
command-file-name должно быть без пробелов
команды pause(и др. команд спрашивающих инфу) в bat файле быть не должно - command-file-name должен сам завершить свою работу без подсказки пользователя.

Немного подправленный исходник
Код:

#include <windows.h>
void main (int argc, char **argv){
HWND hwnd;
hwnd=GetForegroundWindow();
ShowWindow(hwnd, SW_HIDE);
system(argv[1]);
}


mrcnn 18-01-2005 12:53 289666

Поскольку поступил запрос про программу hider, то прикрепляю ее еще раз. Не забывайте, что файл перепаковывается форумом , то следует распаковать скачанный архив, внутри которго будет файл hider, который следует переименовать в hider.zip и потом распаковать

Для информации:

Программой можно запускать любые приложение, даже не консольные, но
скрывать оно будет только консольные.

Запуск производится следующим образом
hider путь
hider имя_файла

Небольшие советы:
1) программа не будет работать с именами файлов или путями в которых
присутствуют пробелы (!)
2) не запускайте программу вхолостую без указания параметров, иначе
придется уничтожать процесс через Диспетчер задач
3) не используйте в bat файлах и т.п. команды, требующие ввод от
пользователя (например pause), только полностью автоматические bat
файлы или скрипты, иначе придется уничтожать процесс через Диспетчер
задач

Если Вам нужно запустить какой-либо файл из директории, содержащей
пробелы, просто скопируйте его в эту директорию.
Например, можно скопировать hider.exe в C:\Program Files\Winamp и при
вводе c консоли hider winamp произойдет запуск winampa

Если имя файла содержит пробелы, переименуйте его так, чтобы он не
содержал пробелы, пробелы можно заменить на символ "_"

Если возникнут вопросы, или программа не будет работать(изначально она
рассчитана на w2k, но, скорее всего, будет работать и в других версиях
windows), пишите.

Sobdo 27-02-2006 16:51 411605

Этот хайдер...
 
Я его в планировщик запихал и решил посмотреть, что получится.
Строка такая:
C:\Perl\scripts\hider.exe scanlog.bat

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

а еще у меня батник вызывает скрипт (перл), все равно окно мелькает

Vadikan 28-02-2006 00:12 411754

Sobdo
См. Скрываем консольные окна

will_expirience 02-04-2008 10:49 772987

Вложений: 1
Хм...
Предложенные решения ни одно не подошло к моему случаю:
Командный файл запускается из VBS скрипта с последующим чтением данных из StdOut.
Чтоб убедиться в вышенаписанном позапускайте примеры из аттача (tests.zip)
  • Без использования доп. программ работает, но появляется окно.
  • cmdow - тоже работает, но мелькает окошко.
  • hidcon, hidec, nircmd - окно не появляется, но и не работает.

GopneG 08-09-2008 08:59 893505

Хм... А Вы не пробовали запускать Ваш "батник" под другой учетной записью? Например, через планировщик заданий? Ы? ;)

stano4nik 12-05-2009 19:14 1116639

http://ru.fileaward.com/bat_to_exe_converter.html

Удачи :-)

забыл может кто- то поленится прочесть хелп.... для тех ставти точечьку "Invisible application"

Drongo 12-05-2009 19:45 1116669

stano4nik, Отличная программа, уже протестировал, правда на простом .bat'e. :up: Ссылку добавил в шапку темы.

Есть одно "но", .bat не должен содержать команды pause, иначе повиснет скрытый в процессах ожидая нажатия любой клавиши...

stano4nik 13-05-2009 17:10 1117499

Drongo, там же есть вторая волшебная точечка которая стоит по умолчанию "Visible application" вот она нескрываем чёрное окно ….. А ещё моно привинтить к программке свой ярлык “.ico” на последней вкладке программы (Versioninformations) указываем путь… так же моно оставить комментарий к программе поставив лычку “Include Versioninformations“ всё что напишете в полях (Description – Описание) потом можно будит увидеть выпадающем меню “Cвойства” на выколотке “Версия” .
Также посетите сайт производителя (http://www.f2ko.de) там есть много интересных программ например компиляция Vbs To Exe бесплатная

Drongo 13-05-2009 17:31 1117530

Цитата:

Цитата stano4nik
волшебная точечка которая стоит по умолчанию "Visible application" вот она нескрываем чёрное окно »

Я в курсе, называется она не "точечка" ;) а переключатель. Но если будет показ окна, то предложенная программа теряет свой смысл. Чаще хотят сделать скрытое выполнение командных файлов.
Цитата:

Цитата stano4nik
Также посетите сайт производителя (http://www.f2ko.de) »

А за ссылку спасибо, полезная.

Shaytan 14-05-2009 20:15 1118600

Не прошло и пяти лет, как я нашел ответ на мучавший меня всё это время вопрос. Спасибо всем, кто не оставался безучастным к проблеме, спасибо stano4nik за программу, а также всем остальным пытавшимся помочь, и просто всем, кто был всё это время с нами! Вместе - мы сила! :oszone:

DemoNF 23-07-2010 15:22 1459212

У меня такая проблема: при входе в терминал пользователям автоматом запускается программа 1С вот таким батником:
Код:

cmdow @/HID 
@ECHO OFF 
CD "C:\Program Files\1Cv77\BIN" 
START /wait 1cv7.exe 
shutdown -l

файл cmdow.exe куда только не ложил все равно при выполнении болтается консольное окно с такой надписью:
Error: The specified window was not found.

В чем проблема? Хелп плз!

Drongo 23-07-2010 21:15 1459427

Попробуй обработать пакетный файл утилитой - Bat To Exe Converter только переключатель сокрытия не забудь установить.

SoaringHawk 04-10-2010 18:44 1511294

Как вариант, можно запускать батник через js. Например:
Нужно запустить example.bat без cmd окна. Создаем example.js с текстом:
Код:

var activex = new ActiveXObject("WScript.Shell");
activex.Run("path_to_example.bat", 0, true);


alex_d2w 19-01-2013 21:39 2070533

:umnik: Утилиты hidec, hidecon, cmdow, CHP - 32-разрядные. Они создают 32-разрядную консоль. Поэтому на 64-разрядных версиях Windows команды, зависящие от разрядности (например, reg), могут работать неправильно. (Сегодня убил полдня, пытаясь понять, почему не срабатывает reg delete). В таких случаях лучше использовать Nircmd или Hstart, так как для них есть 64-разрядные версии (кроме того, у них больше возможностей).
Цитата:

Цитата hasherfrog
всё тоже самое делается не с помощью cmd и моей приблуды, а банальнейшим start /b ляляля.bat »

start /b не срабатывает в Планировщике задач и в окне "Выполнить".

megane68 19-11-2015 19:08 2576605

Всем здравия!!!
Подскажите плиз, как сделать *.exe из *.bat, чтобы права администратора не добавлялись? Нужен запуск от текущего пользователя.
Bat To Exe Converter постоянно компилирует с правами админа. Перепробовал весь софт, который нашёл, только BatToExe 0.5.5.0 cделал EXE без манифеста администратора, но он не умеет убирать окно консоли.
Подскажите плиз, как быть?

geepnozeex 21-12-2021 14:57 2975756

полностью тихий запуск батника из ярлыка -
Код:

mshta vbscript:Execute("CreateObject(""WScript.Shell"").Run ""%systemdrive%\Def.bat"",0,True:close:")
и полностью тихий запуск батника с правами TrustedInstaller -
Код:

%systemdrive%\Def\su.exe /c xmshta vbscript:Execute("CreateObject(""WScript.Shell"").Run ""%systemdrive%\Def\Def.bat"",0,True:close:")
su.exe = superUser v4.0


Время: 22:40.

Время: 22:40.
© OSzone.net 2001-