Войти

Показать полную графическую версию : [решено] Как скрыть консольное окно?


Страниц : 1 [2]

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 и ставить это добро тоже было не вариант. Не моя прерогатива была.

Iska
01-11-2016, 08:16
Надеюсь Вы не про скрипт?)) »
Именно про него. Можно и одной строкой:
WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c ""C:\ваш_файл.bat""", 0, False

alpap
01-11-2016, 15:33
Iska,
а как записать с передачей параметром, как в Autoit

ShellExecute($CmdLine[1],'','','',@SW_HIDE)

не силен пока в VBS.

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

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

alpap
02-11-2016, 01:11
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
т.е., если я пишу в "hide.bat" строку: »
…то попытка исполнения hide.bat завершится с ошибкой, поскольку приведённая строка — это VBScript WSH, и командный процессор не сможет её исполнить.

alpap
02-11-2016, 15:40
поскольку приведённая строка — это VBScript WSH »
вот
поэтому я и спрашивал, как записать строку в "hide.vbs":

WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c ""Чтобы тут был параметр, понятный vbs""", 0, False

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

Iska
02-11-2016, 16:30
поэтому я и спрашивал, как записать строку в "hide.vbs": »
Нет, Вы ранее писали про hide.bat, а не hide.vbs.

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

alpap
02-11-2016, 19:55
примерно так »
Да, так работает как надо. Спасибо!

PavelSES
28-03-2018, 10:26
Может кому пригодится, ещё одна утилита для скрытного запуска: autobat.zip (http://www.mediafire.com/file/yubfpsrjc8igo5b/autobat.zip)

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

alpap
28-03-2018, 17:15
PavelSES,
как ни запускаю выкидывает сюда: ftp://ftp.bat/

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

Iska
28-03-2018, 19:21
как ни запускаю выкидывает сюда: 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
ПРИЧЕМ ПОСЛЕ УДАЛЕНИЕ ЭТОЙ ПРОГРАММЫ ВСЕ-РАВНО ЧЕРЕЗ КАКОЙ-ТО ПРОМЕЖУТОК ВРЕМЕНИ ПОСТОЯННО ТУДА СТУЧИТСЯ! »
Ну так написано там вроде в рид ми, параметры в которых нужно указать файл для запуска...

alpap
29-03-2018, 00:26
PavelSES,
а я по вашему машину Илона Маска запускал?

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

PavelSES
29-03-2018, 00:36
а я по вашему машину Илона Маска запускал? »

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

Iska
29-03-2018, 02:36
PavelSES, негативное впечатление происходит от того, что приведённый Вами код криво написан и криво подан. Результат — налицо.

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

alpap
29-03-2018, 16:01
из-за того что человек не почитав и не разобравшись »
ну да
из этого ридми

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) который лежит рядом с файлом неужели никто из любителей "классики" не догадался? Если бы такая супер неожиданная мысль Вас посетила то я надеюсь поняли бы где параметры указываются...
Программа запускается бех каких либо ключей запуска, и заметьте в ридми нигде не указано что программу нужно запускать именно с доп ключами. Параметры указываются в конфиге, что тоже удобно. А запускается как угодно хоть из автозагрузки хоть из планировщика с минимальными усилиями.
На этом надеюсь откланяться.

alpap
29-03-2018, 23:15
неужели никто из любителей "классики" не догадался? »
а с какой бы радости, да не догадался, а написать об этом - пальчики устали?
так что получается, мне каждый раз надо конфиг редактировать чтобы что-то другое скрыть, плюс этот конфиг таскать или не забыть учитывать. И для кого это тогда, продвинутых? А если человеку просто скрытно надо запустить готовый 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