Вы могли выполнить его тихо использование файла 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])
Аргументы:
Вы выполняете это как запланированную задачу? Раз так установите его для выполнения как другая учетная запись пользователя затем, это не будет видимо зарегистрированному пользователю. Если для сценария не нужен никакой доступ к сети к объектам, для которых нужен автор окон (как доли файла или принтеры), можно выполнить его как "nt authority\system" и оставить незаполненный пароль. В Windows 7, просто устанавливает пользователя на СИСТЕМУ и нажимают OK.
(Вероятно, необходимо использовать реального пользователя хотя при использовании robocopy...),
МЛАДШИЙ
CMDOW является потрясающим инструментом, который позволяет Вам делать многих, много вещей к окнам из командной строки.
Одна из самых простых вещей сделать, скрывают текущее окно (обычно как первая строка в bat-файле) с:
cmdow @ /hid
или запустите новый скрытый процесс с
cmdow /run /hid mybat.bat
Вы могли также попробовать CHP (Создайте скрытый процесс), делает точно, что Вы думали бы...
CHP.EXE mybat.bat
Выполнения без командного окна.Прекрасно! Сделанный теми же людьми как CMDOW, но это является более соответствующим.
Можно создать ярлык на пакетный файл, установить ярлык, чтобы запуститься минимизированный (в свойствах ярлыка, вкладке 'Shortcut'), и затем установить задание для запуска ярлыка.
Важный: необходимо будет указать путь к ярлыку вручную путем ввода его в текстовое поле Run, вместе с '.lnk' расширение; если Вы просто попытаетесь просмотреть к нему, то это услужливо перенаправит себя к тому, на что указывает ярлык.
Просто настройте запланированную задачу как «Запускать независимо от того, вошел ли пользователь в систему».
Попробуйте ввести команду выхода в конец командного файла. Это должно закрыть командное окно, когда сценарий будет готов.
Я понимаю, что на этот вопрос уже был дан ответ с совершенно хорошим разрешением, которое присуще 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, что по сути является просто симуляцией и [очевидно ] на самом деле не подключается к удаленной системе, но когда я запускаю командный файл с наивысшими привилегиями и устанавливаю скрытый флажок, я все еще могу запустить его как зарегистрированный пользователь в фоновом режиме без отображения окна команд, для чего бы это ни было никому стоит.