2009-10-29 12:42:48 +0000 2009-10-29 12:42:48 +0000
144
144

Запустить пакетный файл полностью скрытым способом

Я ищу какой-нибудь способ запустить пакетный файл (.bat) без ничего видимого пользователю (ни окна, ни имени панели задач, .etc…).

Я не хочу использовать какую-то программу для этого, я ищу что-то более чистое. Я нашел решение , использующее VBScript, но мне тоже не очень нравится использовать VBS.

Ответы (23)

122
122
122
2009-10-29 16:29:10 +0000

Разрешение 1:

Сохраните эту строку текста как файл invisible.vbs:

CreateObject(“Wscript.Shell”).Run “”“ & WScript. Аргументы(0) & ”“”, 0, False

Чтобы незаметно запустить любую программу или пакетный файл, используйте его так:

wscript.exe “C:\Wherever\invisible.vbs” “C:\Some Другой Place\MyBatchFile. bat”

Для того, чтобы также иметь возможность вставлять/возвращать список аргументов, используйте только две двойные кавычки

CreateObject(“Wscript.Shell”).Run “” & WScript. Аргументы(0) & “”, 0, False

Пример: Invisible.vbs "Kill.vbs ME.exe"

Разрешение 2:

Используйте инструмент командной строки для бесшумного запуска процесса : Тихо , hidecon или hideexec .

29
29
29
2012-06-29 21:06:44 +0000

Чтобы скрыть пакетные или командные файлы, а также любые другие файлы….. Используйте встроенную утилиту Windows XP IExpress.exe для создания .EXE из пакетного файла. При использовании утилиты IExpress убедитесь, что вы поставили галочку напротив опции “Выполнить скрыто” и поставили галочку напротив опции “Ничего не показывать”. После того, как вы создадите свой .exe, поместите его в любую выбранную вами папку команд запуска, и он никогда не появится на экране.

10
10
10
2009-10-29 12:48:03 +0000

использовать Cmdow - утилита командной строки Win32 для NT4/2000/XP/2003, позволяющая перечислять, перемещать, изменять размер, переименовывать, скрывать/невидимку, отключать/включать, минимизировать, максимизировать, восстанавливать, включать/выключать, закрывать, убивать и т.д.

Запускать пакетный файл, скрытый, передавая ему параметры:-

cmdow /run /hid mybat arg1 “arg 2”.

10
10
10
2013-01-13 03:36:21 +0000

Если ваш пакетный файл может поместиться в одну строку и так много символов, то просто используйте Shortcut, щелкнув правой кнопкой мыши внутри папки, помещенной в случайную директорию, и пропустите остальную часть мастера, и, наконец, щелкните правой кнопкой мыши на только что созданный ярлык и выберите свойства, и под целевым именем введите то, что вы обычно помещаете в файл летучей мыши. И Бобы вашего дяди!

Плюсы:

No Command Window
 Ability to use an icon
 Same Functionality of bat file

Плюсы:

Limited to one line, so many characters
9
9
9
2009-10-29 12:49:03 +0000

Запуск скрипта по заданию, не делая его интерактивным:

at 11:00 script.bat
  • *

Другое решение, если вы не против установить что-то вроде Python, вы можете просто создать скрипт и запустить его с помощью pythonw (ссылочная версия для операций с GUI). Так как вы не используете никаких графических API, окно не будет отображаться. Просто используйте вызовы os.system(), и оно будет имитировать пакетный скрипт, так как это то же самое, что и ввод строк в командную строку.

Пример:

import os

os.system("tasklist > C:\tasks.txt")
os.system("ipconfig /all > C:\netinfo.log")
7
7
7
2014-05-12 08:25:28 +0000

Мне не нравится VBScript-решение.

Скачать и скопировать nircmd.exe в папку %systemroot%\system32, затем добавить эту команду в первую строку вашего пакета:

nircmd.exe win hide ititle "cmd.exe"

или сделать ваш пакетный заголовок настраиваемым сначала с помощью команды title, чтобы избежать скрытия всех cmd окон, как это:

title MyBatch
nircmd.exe win hide ititle "MyBatch"
7
7
7
2009-10-29 15:54:30 +0000

Вы можете запустить его легко.

start /MIN batch.cmd
6
6
6
2013-01-09 20:57:35 +0000

Используя Windows7, вы можете использовать панель управления “Scheduled Task”, чтобы запланировать запуск пакетного файла в фоновом режиме невидимо с заданными правами и даже в качестве учетной записи “SYSTEM”. См. снимок экрана ниже:

Более того, хотя и с небольшим количеством возможностей, вы также можете создать невидимую пакетную задачу из командной строки, используя команду “AT.exe” без опции ‘/interactive’.

5
5
5
2016-10-30 13:15:17 +0000

Превосходный Bat To Exe Converter преобразует ваш файл .bat или .cmd в файл .exe.

Он имеет простой UI. Вы можете выбрать, чтобы не иметь консольное окно, выбрав опцию Exe Format из XX Bit | Windows (Invisible). Кроме того, он позволяет назначить иконку, установить пароль и несколько других опций.

4
4
4
2011-01-26 19:38:48 +0000

Похоже, кто-то составил список 7-8 способов запуска “молчания”:

http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html

4
4
4
2017-06-19 08:27:15 +0000

YET ANOTHER путь, от C/C++, это использование функции CreateProcess с флагом CREATE_NO_WINDOW. В ней много дополнительной мощности, которая здесь не показана. Это всего лишь минимум, необходимый для замены system() или семейства _spawn().

STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);

PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );

// Spawn creates a cmd.exe window. CreateProcess doesn't.
//if ( _spawnl( _P_WAIT, szFileNameBAT, szFileNameBAT, NULL ) ) {  
if ( !CreateProcess( szFileNameBAT, szFileNameBAT, NULL, NULL, false,
                     CREATE_NO_WINDOW, NULL, NULL, &si, &pi ) ) {
  MyErrorFunc( "CreateProcess( \"%s\" ): %d", szFileNameBAT, GetLastError() );
  goto MyErrorHandling;
}

WaitForSingleObject( pi.hProcess, INFINITE );

CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
```.
4
4
4
2017-04-16 14:03:20 +0000

Также можно создать скрипт AutoHotkey :

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
3
3
3
2014-09-24 17:58:35 +0000

Я сделал это успешно с помощью nircmd следующим образом:

  1. скачайте nircmd.exe по ссылке
  2. создайте свой .bat файл
  3. первая строка .bat файла должна быть такой: nircmd.exe win hide ititle "cmd.exe"
  4. выберите оба файла и создайте файл для самораспаковки с помощью winrar
  5. на закладке “general”, установите флажок “create autoextract file”
  6. на закладке “advance” выберите кнопку “autoextract”
  7. появилось новое окно и выберите закладку “mode”, затем выберите опцию “mode”: “скрыть все”
  8. выбрать закладку “обновить” и выбрать опцию “перезаписать существующие файлы”
  9. 9. Выберите закладку “общие” и определите целевую папку для извлечения, если хотите, и в поле “Выполнять после извлечения” запишите полный путь, по которому будет извлекаться ваш .bat. Исх.: если вы определяете как папку для извлечения: “c:\windows\”, то полный путь для извлечения после извлечения будет указан: c:\windows\file.bat" (в случае, если ваш .bat назван: file.bat)
  10. Щелкните “accept on all windows”

. Теперь у вас будет файл .exe, который после того, как вы щелкните по нему и установите, ваш .bat будет работать полностью скрытым.

2
2
2
2016-01-30 16:44:14 +0000

Добавление моего ответа здесь из другого сообщения , так как это был дубликат, и я не вижу этого решения здесь, так что теперь есть 17 различных ответов для того, как вы можете запустить пакетный файл скрыты. Я удалю свой ответ из этого сообщения в ближайшем будущем.

Создайте свой пакетный скрипт с логикой и командами, а затем создайте новый файл с расширением .VBS, используйте следующую логику (пример, который я представил ниже) и просто подключите полный путь к вашему .CMD или .BAT файлу с расширением PING -t <IPAddress>, и т.д. чтобы пакет выполнялся скрытым способом, не показывая окна команд при выполнении.

Где логика в примере ниже указывает C:\Folder\BatchFileName.cmd изменить, чтобы указать на пакетный скрипт с вашими командами, которые вы выполняете вручную, и т.д. теперь.

Сохраните .VBS файл и запланируйте его с Task Scheduler Problems scheduling a task on windows7 to run on a indefinite schedule for your needs.

В противном случае, просто дважды щелкните на .VBS файле, чтобы выполнить бесконечную команду PING, которую вы поместили в пакетный файл, на который вы указываете его по мере необходимости.

NOTE: Полагаю, что именно здесь я получил логику этого скрипта, но он надежно работает для той же цели, что и здесь, а именно для того, чтобы убедиться, что командное окно скрыто при запуске пакетного файла Источник ошибок сервера

ЭКСАМПЛЁННЫЙ VBS SCRIPT RUN COMMAND LINE BATCH HIDING CMD WINDOW

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.cmd" & Chr(34), 0
Set WinScriptHost = Nothing
2
2
2
2012-10-12 07:16:50 +0000
  • Здесь ** Я скомпилировал все известные мне способы запуска скрытого процесса пакетным способом без использования внешних утилит. С готовыми к использованию скриптами (некоторые из них довольно богаты опциями) , и все они формируют командную строку. Где это возможно также возвращается PID .Used tools are IEXPRESS,SCHTASKS,WScript.Shell,Win32_Process и JScript.Net.
2
2
2
2017-03-09 18:01:08 +0000

Несмотря на то, что я уже ответила на это, здесь другой подход. Разница заключается в том, что пакетный скрипт может сам себя скрыть во время выполнения, однако вам понадобятся два дополнительных скрипта - windowMode.bat и getCMDPid.bat (оба содержат код .net). Вот как это может быть использовано:

@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode hidden

echo this should be written into log despite the cmd window is hidden>log
echo ending the log>>log
exit
```.
1
1
1
2011-07-02 09:04:44 +0000

Вам не нужно делать никаких специальных действий.

Если вы запускаете пакетные файлы из службы windows, они должны быть скрыты по умолчанию, если только вы не включили опцию “Разрешить службе взаимодействовать с рабочим столом” в службе.

1
1
1
2010-06-14 14:11:34 +0000
cmdow /run /hid "file.extention" arg1 "arg 2"
0
0
0
2018-05-05 10:39:45 +0000

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

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

cmd /c C:\mypath\myprogram.bat "%1"

Так что, чтобы заменить его, мне нужно было создать vbs вот так:

WScript.CreateObject ("WScript.shell").run "cmd /c C:\mypath\myprogram.bat """ & WScript.Arguments(0) & """", 0, False

Сохранить в таком месте, как C:\mypath\myscript.vbs и вызвать его в реестре:

wscript "C:\mypath\myscript.vbs" "%1"

Обратите внимание, что путь .bat не может иметь пробелов, поэтому замените его на имя файла 8.3. Так что, например, на C:\Program Files\myprogram.bat нужно ссылаться как на C:\Progra~1\myprogram.bat. Чтобы увидеть имя файла 8.3, используйте dir /x.

0
0
0
2018-06-21 08:15:59 +0000

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

Конфигурация, как показано ниже:

файл: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

И запустить runapp.exe вместо этого.

0
0
0
2013-06-07 20:50:58 +0000

У меня была та же проблема, но я ее понял: Shell("filehere" & "parametersforbatchfilehere", vbHidden)

0
0
0
2012-12-17 17:03:50 +0000

Я начал пытаться разобраться в этом, но так и не смог добиться успеха. Это было так близко, как я понял:

@echo off
if not defined PIL (
    set PIL=1
    start /min "" %~0
    exit /b
)
TITLE Hello World
echo Hello world!
pause>nul
```.
-1
-1
-1
2014-08-15 23:36:30 +0000

Это работает для окон 8 (возможно других)

  1. Создать пакетный файл как обычно
  2. Создать ярлык на командный файл
  3. Щелкните правой кнопкой мыши по ярлыку > свойства
  4. Нажмите на Layout
  5. Снимите галочку с “Let system position window”
  6. установите левую позицию tp -1000
  7. нажмите на apply

  8. Нажмите на ярлык, и он запустится, но вы его не увидите :).

Похожие вопросы

3
19
10
28
4