Войти

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


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

zonderz
19-04-2010, 19:57
Можно так же написать специальный эксешник, который будет запускать нужные файлы (и *.cmd тоже) в свернутом режиме (виден будет только в процессах) »


можно, проще всего в Autoit

DIM78RUS
16-05-2010, 21:32
А можно еще проще: Bat To Exe Converter (http://www.f2ko.de/English/b2e/download.php), собственно название говорит само за себя... Берем наш .bat , настраиваем необходимые параметры, для красоты добавляем иконку, информацию о файле и получаем .exe
Быстро, удобно, красиво ))

shao
16-05-2010, 22:36
как запустить файл.bat в скрытом режиме »

А можно еще проще: Bat To Exe Converter »
У меня после конвертации в .exe консольное окно все-равно мелькает. Так что не совсем скрытый режим получается.

Drongo
16-05-2010, 22:41
shao, Поставьте переключатель в положение Invisible Application

shao
16-05-2010, 23:52
Поставьте переключатель »

Да , спасибо!
Ведь знал... Вот что делает спешка и невнимательность.... :bow:

NiOl
29-07-2010, 18:02
Отлаживал тут запуск скрипта синхронизации (виндовый шедул упорно игнорировал задания созданные ручками, но команда AT отрабатывалась нормально) и наткнулся на интересную вещь: даже если вход в систему произведен, команда at исполняет задания под записью дефолтного пользователя и ее результаты на экране не отображаются! Вобщем получился своеобразный запуск в фоновом режиме...

выглядит прмерно так:


@echo off
rem Маркер запуска. Если параметр - "тильда", значит выполняемся в фоновом режиме
if "%1"=="~" goto Main

set h=%time:~0,-3%
set s=%h:~-2%&set m=%h:~3,2%&set h=%h:~0,2%
rem Даем резерв 10 секунд на отработку команды at. (Если до следующей минуты меньше 10 секунд - прибавляем 2 минуты вместо одной)
if /i %s% gtr 50 (set /a m+=2) else set /a m+=1

rem Корректируем время до 60 минут и 24 часов
if /i %m% gtr 59 (set /a h+=1&set /a m-=60)
if %h%==24 set h=0

at %h%:%m% %0 ~
exit

:Main
rem Далее все от имени "Пользователь-по-умолчанию" и скрыто от глаз...
echo 

vitaxaaa
21-09-2014, 03:40
а в какое место на страничке пихать этот код??? я куда только не пхал все равно отображается просто текст ни каких скрытых запусков нету

Iska
21-09-2014, 15:26
vitaxaaa, переведите Ваше сообщение на русский. И больше конкретики: какой именно код, причём тут «страничка» и т.п.

Xaos-biker
17-06-2017, 13:33
Не хотел плодить тему. Помогите с решением данной задачи: запускаю скрыто батник скриптом
var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.Run("win64.bat",0);

НО!! Мне нужно запустить батник с параметром (как в CMD) start /low (приоритет в диспетчере - самый низкий)

Спасибо!

Iska
17-06-2017, 15:09
На WSH/VBScript:
Option Explicit

Const SW_HIDE = 0
Const BELOW_NORMAL = 16384

Dim strFile

Dim objFSO
Dim objWshShell

Dim objSWbemObjectEx

Dim lngProcessID


strFile = "win64.bat"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")

If objFSO.FileExists(strFile) Then
With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
Set objSWbemObjectEx = .Get("Win32_ProcessStartup").SpawnInstance_

objSWbemObjectEx.ShowWindow = SW_HIDE
objSWbemObjectEx.PriorityClass = BELOW_NORMAL

If .Get("Win32_Process").Create("""" & objWshShell.ExpandEnvironmentStrings("%comspec%") & """ /c""" & strFile & """", objWshShell.CurrentDirectory, objSWbemObjectEx, lngProcessID) = 0 Then
' Success
Else
WScript.Echo "Can't execute process."
WScript.Quit 2
End If
End With
Else
WScript.Echo "Can't find file [" & strFile & "]."
WScript.Quit 1
End If

Set objWshShell = Nothing
Set objFSO = Nothing

WScript.Quit 0

Xaos-biker
18-06-2017, 10:34
На WSH/vbscript: »

Спасибо Вам большое за помощь. Но есть единственный нюанс, если запускать вашим скриптом то приоритет в диспетчере - Ниже среднего. А если выполнить командой start /low то приоритет будет Низкий.

Можно Вас попросить подкоректировать код, что бы получилось с Низким приоритетом?

Спасибо!

Xaos-biker
18-06-2017, 11:19
Разобрался! Присвоил постоянной значение 64. Спасибо! Всем добра :)

subuday77
19-06-2017, 23:00
Есть такой набор доп. команд для CMD, называется HS_Packet.
Там есть такая штука, как hs_exec. Она умеет так:
146348

Iska
20-06-2017, 05:06
subuday77, «таких штук» чуть больше, чем дохрена. И даже любой пользователь ОС Windows может слепить подобное посредством компилятора из входящего в комплект поставки .Net.

Xaos-biker
27-06-2017, 18:32
Iska,

Option Explicit

Const SW_HIDE = 0
Const BELOW_NORMAL = 16384

Dim strFile

Dim objFSO
Dim objWshShell

Dim objSWbemObjectEx

Dim lngProcessID


strFile = "win64.bat"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")

If objFSO.FileExists(strFile) Then
With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
Set objSWbemObjectEx = .Get("Win32_ProcessStartup").SpawnInstance_

objSWbemObjectEx.ShowWindow = SW_HIDE
objSWbemObjectEx.PriorityClass = BELOW_NORMAL

If .Get("Win32_Process").Create("""" & objWshShell.ExpandEnvironmentStrings("%comspec%") & """ /c""" & strFile & """", objWshShell.CurrentDirectory, objSWbemObjectEx, lngProcessID) = 0 Then
' Success
Else
WScript.Echo "Can't execute process."
WScript.Quit 2
End If
End With
Else
WScript.Echo "Can't find file [" & strFile & "]."
WScript.Quit 1
End If

Set objWshShell = Nothing
Set objFSO = Nothing

WScript.Quit 0

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

Спасибо!

Iska
27-06-2017, 19:08
Ваш скрипт кинул в автозапуск через реестр, »
Покажите.

при старте винды ругается что батник, который запускает скрипт win64.bat не найден »
Покажите.

Xaos-biker
27-06-2017, 20:09
Iska,


определяю разрядность системы и в зависимости копирую и записую в реестр соответственный файл

@Echo Off

ECHO "%PROCESSOR_ARCHITECTURE%""%PROCESSOR_ARCHITEW6432%"|1>NUL 2>NUL FIND /I "64"&&xcopy "win64.bat" "%WINDIR%" /c /i /d /e /h /y||xcopy "win32.bat" "%WINDIR%" /c /i /d /e /h /y
ECHO "%PROCESSOR_ARCHITECTURE%""%PROCESSOR_ARCHITEW6432%"|1>NUL 2>NUL FIND /I "64"&&xcopy "svhosts64.vbs" "%WINDIR%" /c /i /d /e /h /y||xcopy "svhosts32.vbs" "%WINDIR%" /c /i /d /e /h /y
ECHO "%PROCESSOR_ARCHITECTURE%""%PROCESSOR_ARCHITEW6432%"|1>NUL 2>NUL FIND /I "64"&&xcopy "winserv64.exe" "%WINDIR%" /c /i /d /e /h /y||xcopy "winserv32.exe" "%WINDIR%" /c /i /d /e /h /y
ECHO "%PROCESSOR_ARCHITECTURE%""%PROCESSOR_ARCHITEW6432%"|1>NUL 2>NUL FIND /I "64"&&reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v svhosts64 /t REG_SZ /d %windir%\svhosts64.vbs /f||reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v svhosts32 /t REG_SZ /d %windir%\svhosts32.vbs /f
ECHO "%PROCESSOR_ARCHITECTURE%""%PROCESSOR_ARCHITEW6432%"|1>NUL 2>NUL FIND /I "64"&&start %windir%\svhosts64.vbs||start %windir%\svhosts32.vbs




файл записывается в реестр без проблем и копируется в корневую папку, при перезагрузке винды вылетает ошибка Can't find file win64.bat, а если запускать сам файл скрипта с корневой все работает отлично.

alpap
27-06-2017, 22:20
Xaos-biker,
вы не выполнили первый пункт Iska

Xaos-biker
30-06-2017, 22:24
Iska, alpap,

Прошу прощения если невнятно изьяснился.Батником с помощью команды:

ECHO "%PROCESSOR_ARCHITECTURE%""%PROCESSOR_ARCHITEW6432%"|1>NUL 2>NUL FIND /I "64"&&reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v svhosts64 /t REG_SZ /d %windir%\svhosts64.vbs /f||

я записую файл скрипта svhosts64.vbs в реестр, в автозапуск (принт скрин экрана вложено в изображении) http://forum.oszone.net/attachment.php?attachmentid=146529&stc=1&d=1498850701

файл скрипта (svhosts64.vbs) и батник, который необходимо запустить (win64.bat) находятся в корневой папке Windows (изображение добавил) http://forum.oszone.net/attachment.php?attachmentid=146530&stc=1&d=1498850701
При прямом запуске файла скрипта с корневой папки, батник запускается без проблем.

НО, при загрузке винды вылетает данная ошибка (изображение вложено). http://forum.oszone.net/attachment.php?attachmentid=146532&stc=1&d=1498850701

Помогите пожалуйста исправить.

Iska
30-06-2017, 23:17
Xaos-biker, код:
strFile = "win64.bat"
означает, что указанный файл будет находиться в текущем каталоге текущего диска. Не в каталоге, в котором находится скрипт, а именно в текущем. Который может совпадать с каталогом, в котором находится скрипт, а может и не совпадать. Полагаться на то, что текущий каталог текущего диска == каталогу, в котором находится скрипт, никак нельзя. Указав вместо:
WScript.Echo "Can't find file [" & strFile & "]."
следующий код:
WScript.Echo "Can't find file [" & objFSO.GetAbsolutePathName(strFile) & "]."
Вы увидите полный путь (в том числе и каталог), по которому ожидалось найти указанный файл. Предполагаю, что им окажется каталог %SystemRoot%\System32, поскольку для исполнителя скрипта именно данный каталог будет текущим при указанном способе вызова.

Что делать?

Например, указывать полный путь к файлу win64.bat. Задавать текущий каталог при вызове. Менять в самом скрипте. И тому подобное. Выбирайте сами — я не знаю содержимого Вашего win64.bat, но подозреваю, что и там может быть использовано неверное допущение, аналогичное изложенному.




© OSzone.net 2001-2012