У меня есть запланированное задание, которое запускает пакетный скрипт, который запускается robocopy
каждый час. Каждый раз, когда он запускается, на рабочем столе появляется окно с выводом robocopy, которое я не очень хочу видеть.
Мне удалось заставить окно выглядеть свернутым, запустив запланированное задание
cmd /c start /min mybat.bat
но это дает мне новое окно команд каждый час. Я был удивлен этим, учитывая cmd /c
«Выполняет команду, указанную в строке, а затем завершается» - я, должно быть, неправильно понял документы.
Есть ли способ запустить пакетный скрипт без его появления окна cmd?
Ответы:
Вы можете запустить его без вывода сообщений, используя файл сценария Windows. Метод Run позволяет запускать скрипт в невидимом режиме. Создайте
.vbs
файл как этоти запланировать это. Второй аргумент в этом примере устанавливает стиль окна. 0 означает «скрыть окно».
Полный синтаксис метода Run :
Аргументы:
источник
Вы запускаете это как запланированное задание? Если это так, установите его для запуска под другой учетной записью пользователя, тогда он не будет виден вошедшему в систему пользователю. Если сценарию не нужен сетевой доступ к элементам, для которых требуется проверка подлинности Windows (например, к общим папкам или принтерам), вы можете запустить его как «nt полномочия \ система» и оставить пароль пустым. В Windows 7 просто установите для пользователя значение SYSTEM и нажмите ОК.
(Вы, вероятно, должны использовать реального пользователя, хотя, если вы используете robocopy ...)
JR
источник
Просто настройте запланированную задачу как «Запускать, вошел ли пользователь в систему или нет».
источник
Вы также можете попробовать CHP (Создать скрытый процесс) , который делает именно то, что вы думаете ...
Запускается без командного окна. Отлично! Сделано теми же людьми, что и CMDOW, но это более уместно.
источник
CMDOW - это потрясающий инструмент, который позволяет вам делать множество вещей с окнами из командной строки.
Одна из самых простых вещей - скрыть текущее окно (обычно как первую строку в файле bat) с помощью:
или начать новый скрытый процесс с
источник
Попробуйте вызвать скрипт с
источник
start
это не программа, это команда. Вам нужно указатьcmd
как программу для запуска и/c start /b <file>
как аргумент. Тем не менее, это все равно не сработает, потому что оно все равно создаст консольное окноcmd
и высветит черное окно на экране.Вы можете создать ярлык для командного файла, установить ярлык для запуска свернутым (в свойствах ярлыка, вкладка «Ярлык»), а затем настроить задание для запуска ярлыка.
Важное замечание : Вам необходимо указать путь к ярлыку вручную, введя его в текстовое поле «Выполнить» с расширением «.lnk»; если вы просто попытаетесь перейти к нему, он услужливо перенаправит себя к тому, на что указывает ярлык.
источник
Я понимаю, что на этот вопрос уже было дано достаточно хорошее разрешение, которое присуще Windows, и поэтому должно быть наиболее совместимым, и я полностью согласен.
Я также хотел сказать, что я не согласен с комментарием @ splattne (но не с его реальным ответом) - что разрешение в другой упомянутой теме заслуживает доверия. Этот ответ включает запуск сценария от имени другого пользователя (SYSTEM), что в значительной степени эквивалентно предоставлению корневого доступа сценария. Это также не удастся для заданий, таких как
ROBOCOPY
(на что ссылается Джон Ренни), которые требуют доступа к сети.Я никогда
CMDOW
раньше не пробовал , но я хотел бы предложить другое подобное разрешение, которое [хотя и не установлено в Windows], по-прежнему легко переносимо для большинства версий и поставляется как в 32-, так и в 64-битных версиях, и это NirCmd .NirCmd - очень мощный инструмент, имеющий множество опций, наиболее полезной из которых я лично считаю, что он способен запускать скрытые командные окна, просто выполняя следующее:
Из
exec
раздела Справочника по командам NirCmd :Запускает приложение и, при необходимости, указывает один или несколько параметров командной строки для исполняемого приложения. Параметр [show / hide / min / max] указывает, будет ли запущенное приложение видимым или нет. Если указано «скрыть», запущенное приложение не будет видимо пользователю. Если указано «max», окно запущенного приложения будет развернуто. Если указано «min», окно запущенного приложения будет свернуто.
РЕДАКТИРОВАТЬ: я пытался запустить
ROBOCOPY
задание и попробовал метод в этом ответе, и он не работал, даже после редактирования прав доступа к сети. Я попытался дважды щелкнуть сценарий и не смог заставить его работать, но смог запустить его только в командной строке с повышенными привилегиями. Я создал ярлык для командного файла и запустил его от имени администратора и смог запустить его, дважды щелкнув по нему, но метод, который я использовал, заключался в том, чтобы запустить его скрытым как SYSTEM (я знаю, я знаю) - но он действительно работаетROBOCOPY
, если он имеет правильные права доступа к пакетному файлу.РЕДАКТИРОВАТЬ 2: По какой-то причине, это не будет работать как SYSTEM (возможно, вещь доступа к сети, на которую ссылались ранее) - я заметил это только после того, как на самом деле работает
ROBOCOPY
без флага / L, который в основном просто симуляция и [по-видимому] не на самом деле подключиться к удаленной системе, но когда я запускаю командный файл с наивысшими привилегиями и проверяю скрытый флажок, я все равно могу запустить его как зарегистрированный пользователь в фоновом режиме без отображения командного окна, для чего бы это ни стоило никому ,источник
Другое решение, которое я использовал, - Hidden Start
источник
Попробуйте ввести команду выхода в конце вашего командного файла. Это должно закрыть командное окно, когда скрипт будет выполнен.
источник
Чтобы скрыть вывод (но не окно), добавьте это в начало вашего пакетного файла:
источник