На це питання вже є відповідь тут:
- Запустіть пакетний файл повністю прихованим способом 23 відповіді
Чи можу я запустити пакетний (.bat або .cmd) файл за допомогою ярлика без "чорного вікна"?
На це питання вже є відповідь тут:
Чи можу я запустити пакетний (.bat або .cmd) файл за допомогою ярлика без "чорного вікна"?
Відповіді:
Збережіть наступне як wscript, наприклад, hidcmd.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 із полем "Ціль" для ярликів або проблемою зі сценарієм vbs, в якому він не обробляє належним чином шляхи файлів з пробілами?
Скористайтеся пунктом "/ B". Наприклад:
@echo off
start /B go.bat
start /b
просто запустить програму в виділеній на даний момент консолі замість нерестування нової. Ви все одно отримаєте новий, оскільки пакет повинен працювати з cmd (що, в свою чергу, [здивування], відкриває консоль).
SYSTEM
у C / C ++).
cmd /c foo.cmd
. У start
цих сценаріях абсолютно немає необхідності використовувати , і, я заперечую, це system
не слід використовувати на користь CreateProcess
. Запустивши пакетний файл, ви вже залежите від однієї платформи, ви також можете скористатися кращими інструментами для роботи.
cmd /c
раніше не чув . Команда cmd - це те, що мені було потрібно в моєму випадку, але всі відповіді на stackexchange, які я знайшов поки що, про пакетний файл, що працює з іншим пакетним файлом, мають найвищі відповіді на використання запуску ...
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, запускати декілька команд паралельно чи синхронно та багато іншого .
Просте рішення, без використання зайвих програм.
Удачі!