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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как скрыть консольное окно? (http://forum.oszone.net/showthread.php?t=131397)

7human7 08-02-2009 20:04 1033012

как запускать cmd, чтобы командной строки не было? (не echo off)
cmd-шник на удаление всех файлов с опр. папки?

Котяра 09-02-2009 01:00 1033208

7human7, используя hidcon.exe - так hidcon.exe mybat.bat.
Либо cmdow.exe - его вызов вставляется в батник, а батник обычным способо запускается.

Vadikan 09-02-2009 01:48 1033237

Скрытие консольных окон

7human7 10-02-2009 13:40 1034431

Цитата:

Цитата Котяра
cmdow.exe
hidcon.exe»

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

кстати, после того как задействовал cmd командой hidcon, в диспетчере появилось вот что:

Vadikan 10-02-2009 14:14 1034469

Цитата:

Цитата 7human7
нельзя обойтись без этих "утилит"? стандартным способом windows? »

Нет.

Цитата:

Цитата 7human7
кстати, после того как задействовал cmd командой hidcon, в диспетчере появилось вот что: »

Как вы задействовали? Пример команды приведите. Поймите, тут нет телепатов...

Котяра 10-02-2009 14:50 1034515

Цитата:

Цитата Котяра
hidcon.exe mybat.bat »

7human7, не надо писать это в батник!!

shao 17-02-2010 05:44 1349099

Поскольку я новичок - прошу объяснить более подробно , как использовать утилиту hidcon.exe.
Статью Скрытие консольных окон я прочитал.... Пытался самостоятельно
разобраться и понять, экспериментировал но не получилось... :durak:
Мне нужно запустить (без отображения конс. окна) пакетный файл , например : Install.cmd.
Нужно "hidcon.exe" указать в самом пакетном файле ?
Если -ДА, то результата нет. Окно консольное отображается.
Если же создать ещё один пакетник с командой на скрытый запуск Install.cmd
Код:

hidcon.exe Install.cmd
- то
всё срабатывает, но опять же запускается первый пакетный файл с отображением консольного окна...
Подскажите пожалуйста, как правильно применить ?
И как я понял для использования этой утилиты предполагается её наличие в %windir%\system32 ? :sorry:

gora 17-02-2010 08:51 1349140

shao
Цитата:

Цитата shao
hidcon.exe Install.cmd »

Это правильное написание команды запуска. Сама команда может быть выполнена не только из бат файла, но и из другого приложения, командной строки, реестра, автозагрузки и т.д. в зависимости от ваших потребностей.
Если Вам нужно ее выполнить из другого бат файла, например, start.bat и чтобы окно start.bat не висело пока скрыто выполняется Install.cmd, то добавьте в строку команду Start:
Код:

Start "" hidcon.exe Install.cmd
При этом окно start.bat все равно промелькнет при запуске.
Цитата:

Цитата shao
для использования этой утилиты предполагается её наличие в %windir%\system32 ? »

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

shao 17-02-2010 14:11 1349383

Большое спасибо gora, за ответ и совет !
Возможно не совсем в той теме задаю следующий вопрос, но он возник , как следствие предыдущих.
Если создан файл тихой установки, в котором есть пакетный файл с командой использующей утилиту hidcon.exe
и он используется в дистрибутиве в качестве эддона - то как тогда он будет работать ?
Значит утилиту hidcon.exe нужно где-то размещать в дистрибутиве (чтобы не перепаковывать эддон), или чтобы
при установке Windows hidcon.exe была установлена/помещена в системную папку system32.
Видно я чего-то недопонимаю, к сожалению...

gora 17-02-2010 14:21 1349392

Цитата:

Цитата shao
Если создан файл тихой установки, в котором есть пакетный файл с командой использующей утилиту hidcon.exe
и он используется в дистрибутиве в качестве эддона - то как тогда он будет работать ? »

Положите внутрь этого "файла тихой установки" hidcon.exe, чтобы он был рядом с пакетным файлом и пропишите запуск этого пакетного файла через hidcon.exe как было описано выше.
Вообще трудно советовать, если не имеешь самого аддона, дадите ссылку - скажу точнее.

shao 17-02-2010 16:58 1349521

Цитата:

Цитата gora
Положите внутрь этого "файла тихой установки" hidcon.exe »

Не хотелось бы перепаковывать программку.. Ну да ладно, спасибо ! В принципе это самый простой способ, наверное.

И все-таки , если не затруднит - ещё проконсультируйте пожалуйста:

Утилиты для скрытия консольных окон : hidcon.exe или cmdow.exe - где , корректно нужно разместить (одну из них)
в дистрибутиве , чтобы они при установке Windows, были установлены/помещены в системную папку system32.
Я где-то на сайте или форуме видел информацию об этом (что-то говорилось о папке $OEM$ ), но не помню точно.

З.Ы. Использовал "Поиск" - не нашел..

gora 17-02-2010 18:29 1349607

Цитата:

Цитата shao
Я где-то на сайте или форуме видел информацию об этом (что-то говорилось о папке $OEM$ ), но не помню точно. »

$OEM$ директории на установочном диске

Faw 27-05-2010 15:57 1422257

Самый простой и четкий способ скрытно запустить батник:

1. Скачиваем hidcon.exe, помещаем его куда угодно (например C:\hidcon.exe)

2. Например нам нужно запустить C:\mybat.bat.

3. Создаем ярлык для C:\hidcon.exe и далее нажимаем на него правой кнопкой, выбираем свойства и во вкладке "ярлык" в строке "объект" прописываем C:\hidcon.exe mybat.bat.

4. Далее кидаем этот ярлык в папку автозагрузка. Вот и все. В результате при запуске винды абсолютно ничего не будет мелькать и не нужно писать никаких дополнительных батников.

P.S. Можно и в назначенные задания его кинуть.

stano4nik 07-06-2010 19:01 1429510

Bat_To_Exe_Converter
invisible application (вроде)
уже когда-то поднимали этот вопрос)

deepred 17-06-2010 15:56 1436066

Можно обойтись и без доп. утилит, например:

скрипт js
;название файла: имя_пользователя.js

var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.Run("имя_батника",0);

прим. батник в той же папке, что и скрипт, если dir-и разные, то путь должен быть вида:
C:\\dir1\\dir2\\filename.bat

или vbs

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "путь\ имя_батника",0

или с ожиданием завершения

Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("путь\ имя_батника",0, True)
MsgBox "Пакетник выполнен! Значение кода возврата - " & RetCode

ну и если батник содержит простой сценарий, то можно и так:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd /с Echo Hello && ver && hostname && Echo %windir% && ..... ",0

"0" и есть параметр запуска приложения без окна

чтобы его снова увидеть
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate(" имя приложения")

хотя использование таких утилит как cmdow, hidicon, showtool, hswind позволяет использовать более интересные функции ....

для конкретной задачи:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd /с DEL /F /Q путь\*.*",0

Artell 18-07-2012 12:11 1954135

Какой п"дор удалил hidcon.exe c oszone

Anonymоus 18-07-2012 12:32 1954153

Artell, а это (файл во вложении) что по вашему? И вот это? Стоит использовать поиск - это сэкономит и вам, и окружающим массу времени.
Кроме того, не стоит блистать на технических форумах вашим знанием ненормативной лексики - от того, что вы её слегка зацензурили, она таковой не перестаёт быть.

Fix_seos 05-02-2016 14:03 2602844

У меня сделано так я использовал Advanced BAT to EXE Converter http://www.bdargo.com/ скомпелировал no_console_[].exe с кодом

echo off
CLS
For /F "Tokens=1,2* Delims=*" %%i In ('echo %~n0^|Find "["') Do (set IM=%%i%%j%%k)
For /F "eol=[ Tokens=1,2* Delims=[]" %%i In ('echo %~n0^|Find "["') Do (
echo %IM%|Find "[%%i]" && Set imbat=%%i&&goto OK
echo %IM%|Find "%%i[%%j]" && Set imbat=%%j&&goto OK
echo %IM%|Find "%%i[%%j]%%k" && Set imbat=%%k&&goto OK
goto ext
)
:OK
cd /d "%~dp0"
If exist "%imbat%.bat" (Call "%imbat%.bat" & exit ) Else (goto ext)
:ext
exit

Файл 133685

когда нужно скрыть окно *.bat переименовываем испол-й файл no_console_[имя вашего бата без расширения].exe и кидаем в корень *.bat файла :) :) :)

Deminart 31-10-2016 16:07 2683382

Цитата:

Цитата 7human7
как запускать cmd, чтобы командной строки не было? (не echo off) »

тема конечно очень старая, но может кому пригодится, ибо я тоже не сразу нашёл то что хотел

мне не хотелось использовать cmdnow, hidcon т.п, а стандартными виндовыми методами пакетник спрятать нельзя

но меня вполне устроил вариант когда пакетник запускается свёрнутый

в начале пакетника прописал

if "%~1" == "" (start "" /min "%comspec%" /c "%~f0" any_word & exit /b)

Iska 31-10-2016 17:36 2683412

Цитата:

Цитата Deminart
а стандартными виндовыми методами пакетник спрятать нельзя »

Можно.

Deminart 01-11-2016 07:25 2683606

Цитата:

Цитата Iska
Можно. »

ПодЕлитесь опытом? :)

Цитата:

Цитата Iska
Можно. »

Вы не про скрипт?))

vbs
Set WshShell = CreateObject("WScript.Shell")

WshShell.Run chr(34) & "C:\ваш_файл.bat" & Chr(34), 0

Set WshShell = Nothing


В приципе да, вариант хороший.

Но мне в своё время этот вариант не подошёл, было это связано с тем что не у всех стоял WScript\CScript и ставить это добро тоже было не вариант. Не моя прерогатива была.

Iska 01-11-2016 08:16 2683615

Цитата:

Цитата Deminart
Надеюсь Вы не про скрипт?)) »

Именно про него. Можно и одной строкой:
Код:

WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c ""C:\ваш_файл.bat""", 0, False

alpap 01-11-2016 15:33 2683741

Iska,
а как записать с передачей параметром, как в Autoit
Код:

ShellExecute($CmdLine[1],'','','',@SW_HIDE)
не силен пока в VBS.

Iska 01-11-2016 19:20 2683791

alpap, тут параметры идут вместе с командной строкой. В примере выше:
Код:

WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c ""C:\ваш_файл.bat""", 0, False
красным обозначено приложение, а синим — параметры. Т.е., это одна строка.

В качестве рабочего каталога, если мне не изменяет память (лень сейчас проверять) используется текущий каталог текущего диска (читать/менять/назначать — WshShell.CurrentDirectory).

alpap 02-11-2016 01:11 2683869

Iska,
т.е., если я пишу в "hide.bat" строку:
Код:

WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c ""%~1""", 0, False
компилирую его в "hide.exe"
и теперь могу запускать так: "hide.exe" "C:\ваш_файл.bat"?

Iska 02-11-2016 07:44 2683898

Цитата:

Цитата alpap
т.е., если я пишу в "hide.bat" строку: »

…то попытка исполнения hide.bat завершится с ошибкой, поскольку приведённая строка — это VBScript WSH, и командный процессор не сможет её исполнить.

alpap 02-11-2016 15:40 2684059

Цитата:

Цитата Iska
поскольку приведённая строка — это VBScript WSH »

вот
поэтому я и спрашивал, как записать строку в "hide.vbs":
Код:

WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c ""Чтобы тут был параметр, понятный vbs""", 0, False
чтобы использовать потом конструкцию: "hide.vbs" "C:\ваш_файл.bat".

Iska 02-11-2016 16:30 2684076

Цитата:

Цитата alpap
поэтому я и спрашивал, как записать строку в "hide.vbs": »

Нет, Вы ранее писали про hide.bat, а не hide.vbs.

Цитата:

Цитата alpap
чтобы использовать потом конструкцию: "hide.vbs" "C:\ваш_файл.bat". »

Если без каких-либо проверок — примерно так (не проверялось):
Код:

WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c """ & WScript.Arguments.Item(0) & """", 0, False

alpap 02-11-2016 19:55 2684154

Цитата:

Цитата Iska
примерно так »

Да, так работает как надо. Спасибо!

PavelSES 28-03-2018 10:26 2805916

Может кому пригодится, ещё одна утилита для скрытного запуска: autobat.zip

readme.txt:
Программа принимает на вход данные:
"Name" - Имя запускаемого приложения/файла
"Folder" - Директорию файла
"Povtor" - Псевдобесконечный цикличный запуск с интервалом
"TimeMin"- Время между повторениями в минутах: ВНИМАНИЕ! Указывать только целочисленные значения

alpap 28-03-2018 17:15 2805999

PavelSES,
как ни запускаю выкидывает сюда: ftp://ftp.bat/

ПРИЧЕМ ПОСЛЕ УДАЛЕНИЕ ЭТОЙ ПРОГРАММЫ ВСЕ-РАВНО ЧЕРЕЗ КАКОЙ-ТО ПРОМЕЖУТОК ВРЕМЕНИ ПОСТОЯННО ТУДА СТУЧИТСЯ!

Iska 28-03-2018 19:21 2806013

Цитата:

Цитата alpap
как ни запускаю выкидывает сюда: ftp://ftp.bat/ »

alpap, Вы рискуете запускать подобные вещи без исходного кода? Я — нет.

Это потому что умолчания сделаны через пень-колоду и без каких-либо проверок. Краткий аналог на PowerShell выглядит примерно так (и работает, естественно, так же):
Код:

$oProcessStartInfo = [System.Diagnostics.ProcessStartInfo]::new()

$oProcessStartInfo.WorkingDirectory = "c:\Windows\FTP"
$oProcessStartInfo.FileName = "ftp.bat"
$oProcessStartInfo.UseShellExecute = $true

$oProcess = [System.Diagnostics.Process]::Start($oProcessStartInfo)

Цитата:

Цитата alpap
ПРИЧЕМ ПОСЛЕ УДАЛЕНИЕ ЭТОЙ ПРОГРАММЫ ВСЕ-РАВНО ЧЕРЕЗ КАКОЙ-ТО ПРОМЕЖУТОК ВРЕМЕНИ ПОСТОЯННО ТУДА СТУЧИТСЯ! »

Видимо, так и продолжает висеть в процессах — и по умолчанию он пытается сделать ShellExecute для несуществующего файла "c:\Windows\FTP\ftp.bat" каждые пять минут.

PavelSES 29-03-2018 00:05 2806058

Цитата:

Цитата alpap
ПРИЧЕМ ПОСЛЕ УДАЛЕНИЕ ЭТОЙ ПРОГРАММЫ ВСЕ-РАВНО ЧЕРЕЗ КАКОЙ-ТО ПРОМЕЖУТОК ВРЕМЕНИ ПОСТОЯННО ТУДА СТУЧИТСЯ! »

Ну так написано там вроде в рид ми, параметры в которых нужно указать файл для запуска...

alpap 29-03-2018 00:26 2806061

PavelSES,
а я по вашему машину Илона Маска запускал?

Цитата:

Цитата Iska
рискуете запускать подобные вещи без исходного кода? »

у меня весь C:\ в песочнице (Shadow Defender) постоянно - перезагрузился и нет проблем
Цитата:

Цитата Iska
Видимо, так и продолжает висеть в процессах »

вот это вряд ли, так как когда хотел удалить exeшник, система не давала, как раз говорит процесс занят, но с помощью лома (IObit Unlocker) он был прекрасно удален, а при этом происходит разблокировка процесса, но в диспетчер не заглядывал, решил все по идее, ан нет опять лезет в инет, пришлось перезагрузиться, но еще перепроверять нет желания.

PavelSES 29-03-2018 00:36 2806062

Цитата:

Цитата alpap
а я по вашему машину Илона Маска запускал? »

Вот так и происходит негативное впечатление из-за того что человек не почитав и не разобравшись тыкает все подряд.
В конфиге программы надо указать путь к файлу, частоту запуска и тип запуска (одноразовый или постоянный цикл с повтором через определенный промежуток времени...), и если указан бесконечный повтор то да программа будет висеть в процессах до бесконечности. И да она будет пытаться открывать в ассоциированной программе неизвестный тип файла, который ВЫ не УКАЗАЛИ!!!

Iska 29-03-2018 02:36 2806065

PavelSES, негативное впечатление происходит от того, что приведённый Вами код криво написан и криво подан. Результат — налицо.

Цитата:

Цитата PavelSES
И да она будет пытаться открывать в ассоциированной программе неизвестный тип файла, который ВЫ не УКАЗАЛИ!!! »

Несуществующий файл по несуществующему пути.

alpap 29-03-2018 16:01 2806128

Цитата:

Цитата PavelSES
из-за того что человек не почитав и не разобравшись »

ну да
из этого ридми

readme.txt:
Программа принимает на вход данные:
"Name" - Имя запускаемого приложения/файла
"Folder" - Директорию файла
"Povtor" - Псевдобесконечный цикличный запуск с интервалом
"TimeMin"- Время между повторениями в минутах: ВНИМАНИЕ! Указывать только целочисленные значения

что можно понять?

Я, как все нормальные люди, запускал классически: autobat.exe name.bat
Допустим надо указать все параметры (хорошо, если еще очередность правильная): autobat.exe name.bat С:\ 0 00
имя файла с расширением хоть указывать?
указывать папку как привел или без завершающего слеша
(имя файла или папки в пути если будет с пробелом этот параметр можно в кавычки брать?)
повтор если не нужен - 0 ставить?
время повторения не нужно соотвественно - 00 писать как в примере?

Можно было тогда пример запуска привести?!!!
Или по уму сделать как другие, не указаны следующие параметры, значит не используются и на работу влияния не оказывают и
тогда классический вариант должен правильно и без проблем работать.

PavelSES 29-03-2018 21:49 2806196

Сн
Цитата:

Цитата alpap
Я, как все нормальные люди, запускал классически: autobat.exe name.bat »

... а вот открыть файл конфига (autobat.exe.config) который лежит рядом с файлом неужели никто из любителей "классики" не догадался? Если бы такая супер неожиданная мысль Вас посетила то я надеюсь поняли бы где параметры указываются...
Программа запускается бех каких либо ключей запуска, и заметьте в ридми нигде не указано что программу нужно запускать именно с доп ключами. Параметры указываются в конфиге, что тоже удобно. А запускается как угодно хоть из автозагрузки хоть из планировщика с минимальными усилиями.
На этом надеюсь откланяться.

alpap 29-03-2018 23:15 2806207

Цитата:

Цитата PavelSES
неужели никто из любителей "классики" не догадался? »

а с какой бы радости, да не догадался, а написать об этом - пальчики устали?
так что получается, мне каждый раз надо конфиг редактировать чтобы что-то другое скрыть, плюс этот конфиг таскать или не забыть учитывать. И для кого это тогда, продвинутых? А если человеку просто скрытно надо запустить готовый bat, надо сидеть изучать как теперь все это сделать? На vbs или с помощью nircmd одна строка, все прозрачно, никаких телодвижений и не надо прицеп из разных библиотек или конфигов таскать. Плюс вижу только один - размер файла.

Patroklos 30-03-2018 17:29 2806281

Есть ещё такая прожка:
https://unclassified.software/en/apps/hideconsole
Код:

HideConsole.exe c:\ntpdate.exe 131.188.3.220
HideConsole.exe /wait c:\tmp\some_copy_script.cmd

У них ещё немало полезных утилит.


Время: 21:52.

Время: 21:52.
© OSzone.net 2001-