Выполните .bat файл в запланированной задаче без окна

Вы попытались отключить и включить аппаратный ключ, в то время как соединено с Удаленным Dekstop? Это, возможно, просто должно установить драйверы при соединении как другой пользователь.

143
задан 13 June 2009 в 18:10
11 ответов

Вы могли выполнить его тихо использование файла Windows Script вместо этого. Метод Выполнения позволяет Вам запускающий скрипт в невидимом режиме. Создайте a .vbs файл как этот

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

и запланируйте его. Второй аргумент в этом примере устанавливает стиль окна. 0 означает, "скрывают окно".

Полный синтаксис метода Выполнения:

 object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

Аргументы:

  • объект: объект WshShell.
  • strCommand: Строковое значение, указывающее на командную строку, Вы хотите работать. Необходимо включать любые параметры, которые Вы хотите передать исполняемому файлу.
  • intWindowStyle: Дополнительный. Целочисленное значение, указывающее на появление окна программы. Обратите внимание, что не все программы используют эту информацию.
  • bWaitOnReturn: Дополнительный. Булево значение, указывающее, должен ли сценарий ожидать программы, чтобы закончить выполняться прежде, чем продолжиться к следующему оператору в Вашем сценарии. Если установлено на истинный, остановы выполнения сценария до концов программы и Выполнения возвращает любой код ошибки, возвращенный программой. Если установлено на ложь (значение по умолчанию), метод Выполнения сразу возвращается после запуска программы, автоматически возвращаясь 0 (чтобы не быть интерпретированным как код ошибки).
144
ответ дан 28 November 2019 в 19:17
  • 1
    +1, просто записал точно то же самое –  Sam Cogan 17 May 2009 в 12:10
  • 2
    Я видел его перед удалением его. Я предполагаю, что мы - оба боты.;-) –  splattne 17 May 2009 в 12:14
  • 3
    имя пользователя, я честно думаю, что Sam заслуживает его намного больше, чем я. Но спасибо так или иначе! И don' t упоминают меня и Jon Skeet в том же предложении. That' s богохульство!;-) –  splattne 17 May 2009 в 17:00

Вы выполняете это как запланированную задачу? Раз так установите его для выполнения как другая учетная запись пользователя затем, это не будет видимо зарегистрированному пользователю. Если для сценария не нужен никакой доступ к сети к объектам, для которых нужен автор окон (как доли файла или принтеры), можно выполнить его как "nt authority\system" и оставить незаполненный пароль. В Windows 7, просто устанавливает пользователя на СИСТЕМУ и нажимают OK.

(Вероятно, необходимо использовать реального пользователя хотя при использовании robocopy...),

МЛАДШИЙ

59
ответ дан 28 November 2019 в 19:17
  • 1
    Спасибо - это было меньшим количеством стычки для меня, чем .vbs опция. –  mackenir 10 February 2010 в 18:45

Попытайтесь вызвать сценарий с

start /b <command>
5
ответ дан 28 November 2019 в 19:17

CMDOW является потрясающим инструментом, который позволяет Вам делать многих, много вещей к окнам из командной строки.

Одна из самых простых вещей сделать, скрывают текущее окно (обычно как первая строка в bat-файле) с:

cmdow @ /hid

или запустите новый скрытый процесс с

cmdow /run /hid mybat.bat 
9
ответ дан 28 November 2019 в 19:17

Вы могли также попробовать CHP (Создайте скрытый процесс), делает точно, что Вы думали бы...

CHP.EXE mybat.bat

Выполнения без командного окна.Прекрасно! Сделанный теми же людьми как CMDOW, но это является более соответствующим.

17
ответ дан 28 November 2019 в 19:17

Можно создать ярлык на пакетный файл, установить ярлык, чтобы запуститься минимизированный (в свойствах ярлыка, вкладке 'Shortcut'), и затем установить задание для запуска ярлыка.

Важный: необходимо будет указать путь к ярлыку вручную путем ввода его в текстовое поле Run, вместе с '.lnk' расширение; если Вы просто попытаетесь просмотреть к нему, то это услужливо перенаправит себя к тому, на что указывает ярлык.

5
ответ дан 28 November 2019 в 19:17

Просто настройте запланированную задачу как «Запускать независимо от того, вошел ли пользователь в систему».

29
ответ дан 28 November 2019 в 19:17

Попробуйте ввести команду выхода в конец командного файла. Это должно закрыть командное окно, когда сценарий будет готов.

-2
ответ дан 28 November 2019 в 19:17

Чтобы скрыть вывод (но не окно), добавьте это в начало вашего командного файла:

@echo off
-2
ответ дан 28 November 2019 в 19:17

Другое решение, которое я использовал, это Hidden Start

0
ответ дан 28 November 2019 в 19:17

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

Я также хотел сказать, что не согласен с комментарием @ splattne (но не его фактический ответ) - что разрешение в другом упомянутом потоке заслуживает похвалы. Этот ответ включает запуск сценария от имени другого пользователя (SYSTEM), что в значительной степени эквивалентно предоставлению корневого доступа сценария. Он также не сработает для таких заданий, как ROBOCOPY (как указано Джоном Ренни), которые требуют доступа к сети.

Я никогда раньше не пробовал CMDOW , но я хотел бы предложить другое аналогичное разрешение, которое [хотя и не изначально установлено в Windows] по-прежнему хорошо переносимо для большинства версий и поставляется как в 32-битной, так и в 64-битной версиях, и это NirCmd .

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

c:\path\to\nircmd.exe exec hide "c:\path\to\mybat.bat"

Из раздела exec в Справочник команд NirCmd :

exec [show/hide/min/max] [application + command-line]

Запускает приложение и, при необходимости, указывает один или несколько параметров командной строки для исполняемого приложения. Параметр [show / hide / min / max] указывает, будет ли запущенное приложение видимым или нет. Если указано «скрыть», запущенное приложение не будет видно пользователю. Если указано «max», окно запущенного приложения будет развернуто. Если указано «min», окно работающего приложения будет свернуто.

РЕДАКТИРОВАТЬ: Я пытался запустить задание ROBOCOPY и попробовал метод, указанный в этом ответе, но он не работал даже после редактирования прав доступа к сети. Я попытался дважды щелкнуть скрипт и не смог заставить его работать, а смог только запустить его из командной строки с повышенными привилегиями. Я создал ярлык для командного файла и запустил его от имени администратора, и я смог запустить его, дважды щелкнув его, но метод, который я выбрал, заключался в том, чтобы запустить его скрытым как SYSTEM (я знаю, я знаю) - но он действительно работает с ROBOCOPY , чего это стоит, пока пакетный файл имеет правильные разрешения.

РЕДАКТИРОВАТЬ 2: По какой-то причине это не работало как СИСТЕМА (вероятно, тот доступ к сети, о котором говорилось ранее) - я заметил это только после того, как на самом деле запустил ROBOCOPY без флага / L, что по сути является просто симуляцией и [очевидно ] на самом деле не подключается к удаленной системе, но когда я запускаю командный файл с наивысшими привилегиями и устанавливаю скрытый флажок, я все еще могу запустить его как зарегистрированный пользователь в фоновом режиме без отображения окна команд, для чего бы это ни было никому стоит.

1
ответ дан 28 November 2019 в 19:17

Теги

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