Windows XP или более поздний Windows: Как я могу выполнить пакетный файл в фоновом режиме без отображенного окна?

118
задан Community 23 May 2017 в 12:03
поделиться

5 ответов

Вам нужен второй пакетный файл для выполнения асинхронно? Обычно один пакетный файл выполняет другого синхронно с эти call команда, и второй совместно использовал бы первое окно.

Вы можете использование start /b second.bat для запуска второго пакетного файла синхронно от первого, которое совместно использует первое окно. Если оба пакетных файла запишут в консоль одновременно, вывод будет перекрыт и вероятно непонятный. Кроме того, Вы захотите поместить exit команда в конце Вашего второго пакетного файла, или Вы будете в течение секунды cmd оболочка, как только все сделано.

53
ответ дан P Daddy 24 November 2019 в 01:58
поделиться

Вот возможное решение:

Из Вашего первого сценария, назовите свой второй сценарий со следующей строкой:

wscript.exe invis.vbs run.bat %*

На самом деле, Вы называете vbs сценарий с:

  • [путь] \name Вашего сценария
  • все другие аргументы, необходимые Вашему сценарию (%*)

Затем invis.vbs, назовут Ваш сценарий с Windows Script Host Run () метод , который берет:

  • intWindowStyle: 0 означает "невидимые окна"
  • bWaitOnReturn: ложь означает, что Ваш первый сценарий не должен ожидать Вашего второго сценария для окончания

, Вот invis.vbs:

set args = WScript.Arguments
num = args.Count

if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
    WScript.Quit 1
end if

sargs = ""
if num > 1 then
    sargs = " "
    for k = 1 to num - 1
        anArg = args.Item(k)
        sargs = sargs & anArg & " "
    next
end if

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
109
ответ дан Ilyich 24 November 2019 в 01:58
поделиться

Преобразуйте пакетный файл в exe. Попробуйте Летучая мышь К Преобразователю Exe или Летучая мышь Онлайн К Преобразователю Exe и выберите опцию выполнить его как фантомное приложение, т.е. никакое окно.

12
ответ дан E-rich 24 November 2019 в 01:58
поделиться

В другом вопросе я предложил autoexnt. Это также возможно в этой ситуации. Просто установите сервис работать вручную (т.е. не автоматические при запуске). Когда Вы хотите выполнить свой пакет, изменить файл autoexnt.bat для вызова пакетного файла, Вы хотите и запускаете autoexnt сервис.

batchfile для запуска этого, может быть похожим на (непротестированный):

echo call c:\path\to\batch.cmd %* > c:\windows\system32\autoexnt.bat
net start autoexnt

Примечание, что пакетные файлы запустили этот путь, выполненный как пользователь системы, что означает, у Вас нет доступа к сетевым ресурсам автоматически. Но можно использовать сетевое использование для соединения с удаленным сервером.

Вы имеете к , загружают Windows 2003 Resource Kit для получения его. Набор Ресурса может также быть установлен на других версиях окон, как Windows XP.

2
ответ дан wimh supports Monica 24 November 2019 в 01:58
поделиться

Выполните его под различным именем пользователя, с помощью "runas" или путем планирования его при различном пользователе в Windows Scheduled Tasks.

2
ответ дан JosephStyons 24 November 2019 в 01:58
поделиться