Показать полную графическую версию : [решено] Как скрыть консольное окно?
Deminart
01-11-2016, 07:25
Можно. »
ПодЕлитесь опытом? :)
Можно. »
Вы не про скрипт?))
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\ваш_файл.bat" & Chr(34), 0
Set WshShell = Nothing
В приципе да, вариант хороший.
Но мне в своё время этот вариант не подошёл, было это связано с тем что не у всех стоял WScript\CScript и ставить это добро тоже было не вариант. Не моя прерогатива была.
Надеюсь Вы не про скрипт?)) »
Именно про него. Можно и одной строкой:
WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c ""C:\ваш_файл.bat""", 0, False
Iska,
а как записать с передачей параметром, как в Autoit
ShellExecute($CmdLine[1],'','','',@SW_HIDE)
не силен пока в VBS.
alpap, тут параметры идут вместе с командной строкой. В примере выше:
WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c ""C:\ваш_файл.bat""", 0, False
красным обозначено приложение, а синим — параметры. Т.е., это одна строка.
В качестве рабочего каталога, если мне не изменяет память (лень сейчас проверять) используется текущий каталог текущего диска (читать/менять/назначать — WshShell.CurrentDirectory).
Iska,
т.е., если я пишу в "hide.bat" строку:
WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c ""%~1""", 0, False
компилирую его в "hide.exe"
и теперь могу запускать так: "hide.exe" "C:\ваш_файл.bat"?
т.е., если я пишу в "hide.bat" строку: »
…то попытка исполнения hide.bat завершится с ошибкой, поскольку приведённая строка — это VBScript WSH, и командный процессор не сможет её исполнить.
поскольку приведённая строка — это VBScript WSH »
вот
поэтому я и спрашивал, как записать строку в "hide.vbs":
WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c ""Чтобы тут был параметр, понятный vbs""", 0, False
чтобы использовать потом конструкцию: "hide.vbs" "C:\ваш_файл.bat".
поэтому я и спрашивал, как записать строку в "hide.vbs": »
Нет, Вы ранее писали про hide.bat, а не hide.vbs.
чтобы использовать потом конструкцию: "hide.vbs" "C:\ваш_файл.bat". »
Если без каких-либо проверок — примерно так (не проверялось):
WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c """ & WScript.Arguments.Item(0) & """", 0, False
примерно так »
Да, так работает как надо. Спасибо!
PavelSES
28-03-2018, 10:26
Может кому пригодится, ещё одна утилита для скрытного запуска: autobat.zip (http://www.mediafire.com/file/yubfpsrjc8igo5b/autobat.zip)
readme.txt:
Программа принимает на вход данные:
"Name" - Имя запускаемого приложения/файла
"Folder" - Директорию файла
"Povtor" - Псевдобесконечный цикличный запуск с интервалом
"TimeMin"- Время между повторениями в минутах: ВНИМАНИЕ! Указывать только целочисленные значения
PavelSES,
как ни запускаю выкидывает сюда: ftp://ftp.bat/
ПРИЧЕМ ПОСЛЕ УДАЛЕНИЕ ЭТОЙ ПРОГРАММЫ ВСЕ-РАВНО ЧЕРЕЗ КАКОЙ-ТО ПРОМЕЖУТОК ВРЕМЕНИ ПОСТОЯННО ТУДА СТУЧИТСЯ!
как ни запускаю выкидывает сюда: 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)
ПРИЧЕМ ПОСЛЕ УДАЛЕНИЕ ЭТОЙ ПРОГРАММЫ ВСЕ-РАВНО ЧЕРЕЗ КАКОЙ-ТО ПРОМЕЖУТОК ВРЕМЕНИ ПОСТОЯННО ТУДА СТУЧИТСЯ! »
Видимо, так и продолжает висеть в процессах — и по умолчанию он пытается сделать ShellExecute для несуществующего файла "c:\Windows\FTP\ftp.bat" каждые пять минут.
PavelSES
29-03-2018, 00:05
ПРИЧЕМ ПОСЛЕ УДАЛЕНИЕ ЭТОЙ ПРОГРАММЫ ВСЕ-РАВНО ЧЕРЕЗ КАКОЙ-ТО ПРОМЕЖУТОК ВРЕМЕНИ ПОСТОЯННО ТУДА СТУЧИТСЯ! »
Ну так написано там вроде в рид ми, параметры в которых нужно указать файл для запуска...
PavelSES,
а я по вашему машину Илона Маска запускал?
рискуете запускать подобные вещи без исходного кода? »
у меня весь C:\ в песочнице (Shadow Defender) постоянно - перезагрузился и нет проблем
Видимо, так и продолжает висеть в процессах »
вот это вряд ли, так как когда хотел удалить exeшник, система не давала, как раз говорит процесс занят, но с помощью лома (IObit Unlocker) он был прекрасно удален, а при этом происходит разблокировка процесса, но в диспетчер не заглядывал, решил все по идее, ан нет опять лезет в инет, пришлось перезагрузиться, но еще перепроверять нет желания.
PavelSES
29-03-2018, 00:36
а я по вашему машину Илона Маска запускал? »
Вот так и происходит негативное впечатление из-за того что человек не почитав и не разобравшись тыкает все подряд.
В конфиге программы надо указать путь к файлу, частоту запуска и тип запуска (одноразовый или постоянный цикл с повтором через определенный промежуток времени...), и если указан бесконечный повтор то да программа будет висеть в процессах до бесконечности. И да она будет пытаться открывать в ассоциированной программе неизвестный тип файла, который ВЫ не УКАЗАЛИ!!!
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
СнЯ, как все нормальные люди, запускал классически: autobat.exe name.bat »
... а вот открыть файл конфига (autobat.exe.config) который лежит рядом с файлом неужели никто из любителей "классики" не догадался? Если бы такая супер неожиданная мысль Вас посетила то я надеюсь поняли бы где параметры указываются...
Программа запускается бех каких либо ключей запуска, и заметьте в ридми нигде не указано что программу нужно запускать именно с доп ключами. Параметры указываются в конфиге, что тоже удобно. А запускается как угодно хоть из автозагрузки хоть из планировщика с минимальными усилиями.
На этом надеюсь откланяться.
неужели никто из любителей "классики" не догадался? »
а с какой бы радости, да не догадался, а написать об этом - пальчики устали?
так что получается, мне каждый раз надо конфиг редактировать чтобы что-то другое скрыть, плюс этот конфиг таскать или не забыть учитывать. И для кого это тогда, продвинутых? А если человеку просто скрытно надо запустить готовый bat, надо сидеть изучать как теперь все это сделать? На vbs или с помощью nircmd одна строка, все прозрачно, никаких телодвижений и не надо прицеп из разных библиотек или конфигов таскать. Плюс вижу только один - размер файла.
Patroklos
30-03-2018, 17:29
Есть ещё такая прожка:
https://unclassified.software/en/apps/hideconsole
HideConsole.exe c:\ntpdate.exe 131.188.3.220
HideConsole.exe /wait c:\tmp\some_copy_script.cmd
У них ещё немало полезных утилит.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.