На этот вопрос уже есть ответ здесь:
В Windows XP можно ли запустить пакетный файл (.bat или .cmd) через ярлык без «черного окна»?
На этот вопрос уже есть ответ здесь:
В Windows XP можно ли запустить пакетный файл (.bat или .cmd) через ярлык без «черного окна»?
Ответы:
Сохраните следующее как wscript, например, hidecmd.vbs после замены «testing.bat» именем вашего пакетного файла.
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false
Второй параметр oShell.Run
- это intWindowStyle
значение, указывающее внешний вид окна программы, а нулевое значение - для скрытого окна.
Ссылка здесь http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx
.bat
файл от имени администратора с помощью этого метода?
Это просто упрощение ответа Шаджи. Вы можете запустить свой пакетный скрипт через скрипт VBScript (.vbs) следующим образом:
'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True
Это выполнит ваш командный файл без показанного командного окна.
.bat
файл от имени администратора, используя этот метод?
Просто чтобы развернуть ответы «Использовать сценарии Windows» (которые я считаю лучше всего, потому что они уже встроены), вот как это сделать, используя один скрипт-обертку и передавая имя «реального» пакетного файла в качестве параметра. Дополнительные параметры будут переданы в командный файл.
If WScript.Arguments.Count >= 1 Then
ReDim arr(WScript.Arguments.Count-1)
For i = 0 To WScript.Arguments.Count-1
Arg = WScript.Arguments(i)
If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
arr(i) = Arg
Next
RunCmd = Join(arr)
CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If
Так, например, сохраните указанный выше файл как- NoShell.vbs
нибудь, затем вызовите:
NoShell.vbs c:\foo\my_batch_file.bat
Наконец, если вы хотите запустить это откуда-то, которое не понимает файл .vbs (например, «Внешние инструменты» в Visual Studio), вы захотите вызвать C:\Windows\System32\wscript.exe
файл vbs в качестве первого параметра и ваш командный файл как второй.
"C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat
.
"C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat
. Неважно, что я пытаюсь найти для пути - двойные кавычки вокруг всего этого,% 20 вместо пробела или комбинация этих двух, ничего не работает. Я получаю сообщение об ошибке, сообщающее, что файл не найден или ничего не происходит. Это из-за ошибки пользователя с моей стороны, ограничения Windows с полем Target для ярлыков или проблемы со скриптом vbs, в котором он не обрабатывает пути к файлам с пробелами должным образом?
Используйте начало с опции '/ B'. Например:
@echo off
start /B go.bat
start /b
просто запустит программу в выделенной в данный момент консоли вместо того, чтобы создавать новую. В любом случае вы получите новый, так как пакет должен работать с cmd (который, в свою очередь, [сюрприз] открывает консоль).
SYSTEM
в C / C ++).
cmd /c foo.cmd
. Нет абсолютно никакой необходимости использовать start
в этих сценариях, и я бы сказал, что system
не следует использовать в пользу CreateProcess
. Запуская пакетный файл, вы уже зависите от одной платформы, вы также можете использовать лучшие инструменты для этой работы.
cmd /c
раньше. Команда cmd - это то, что мне было нужно в моем случае, но все ответы на стек, которые я нашел до сих пор, о командном файле, на котором запущен другой командный файл, имеют лучшие ответы для использования start ...
start /b go.bat
не будет выделять новую консоль (т. е. экземпляр conhost.exe - или поток в csrss.exe до Windows 7). Однако это приведет к путанице, поскольку пакетный скрипт запускается с новым экземпляром cmd.exe, который подключен к той же консоли . Оба экземпляра оболочки будут конкурировать за чтение ввода с консоли, как правило, поочередно. Это нужно /w
(например start /b /w go.bat
) для того, чтобы ждать второго экземпляра, что похоже на использование cmd /c
при использовании system
. Кроме того, если вы звоните CreateProcess
, бегите go.bat
напрямую. Там нет необходимости cmd /c
.
Бесплатный GPL с открытым исходным кодом "Создать скрытый процесс"
http://www.commandline.co.uk/chp/
Microsoft Security Essentials и, возможно, большинство других сканеров вирусов и вредоносных программ будут относиться к исполняемому файлу chp.exe как к вирусу, поскольку он скрывает любую указанную программу от отображения окна или кнопки панели задач, как это делают вирусы.
Это не вирус. Например, не скрывает целевой процесс от появления в диспетчере задач. И, конечно, исходный код включен, так что вы можете видеть, что он очень маленький и ничего не делает, кроме запуска любой программы, которую вы ему даете.
Вы даже не должны верить, что включенный chp.exe действительно был собран из этого источника. Вы можете отказаться от прилагаемого chp.exe и скомпилировать свой собственный из исходного кода, и все необходимые инструменты для этого даже бесплатны и загружаемы.
Вы также можете просто создать ярлык для файла .bat или .cmd, затем щелкнуть правой кнопкой мыши ярлык, Свойства, вкладку Ярлык, Выполнить: свернуто. Затем в запланированных задачах используйте ярлык вместо файла .bat / .cmd напрямую. Это предотвратит появление окна, но кнопка панели задач все равно появится.
Вы можете использовать сценарии окна, такие как AutoIt .
Например, просто напишите это в редактор сценариев AutoIt. Это довольно просто
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Если вы хотите запустить его в цикле,
$x=0
Do
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Sleep(5000)
Until $x = 1
Скомпилируйте его как .exe - и все готово.
Аналогично, в AutoHotkey :
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
Используйте скрытый старт (стоит $ 20)
Скрытый запуск - запуск приложений и пакетных файлов без консольного окна или запроса UAC
Консольные приложения и командные файлы регулярно запускаются при запуске Windows или по расписанию. Основным неудобством этого является то, что каждое приложение открывает консольное окно, которое мерцает на экране. Скрытый запуск (или Hstart) - это облегченная утилита командной строки, которая позволяет запускать консольные приложения и пакетные файлы без какого-либо окна в фоновом режиме, обрабатывать повышение привилегий UAC в Windows 7 и Vista, запускать несколько команд параллельно или синхронно и многое другое. ,
Простое решение, без использования каких-либо дополнительных программ.
Удачи!