Как запускать bat файл в фоновом режиме

Обновлено: 06.07.2024

У меня есть запланированная задача, которая запускает пакетный скрипт, который запускает robocopy каждый час. Каждый раз, когда он запускает окно, появляется на рабочем столе с выходом robocopy, который я действительно не хочу видеть.

Мне удалось сделать окно свернутым, выполнив запланированное задание

, но это дает мне новое окно команд каждый час. Я был удивлен этим, учитывая cmd /c "Выполняет команду, указанную строкой, а затем завершает" - я, должно быть, неправильно понял документы.

Есть ли способ запустить пакетный скрипт без появления окна cmd?

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

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

  • объект: объект WshShell.
  • strCommand: Строковое значение, указывающее командную строку, которую вы хотите запустить. Вы должны указать любые параметры, которые хотите передать исполняемому файлу.
  • intWindowStyle: необязательно. Целое значение, указывающее внешний вид окна программы. Обратите внимание, что не все программы используют эту информацию.
  • bWaitOnReturn: Необязательно. Логическое значение, указывающее, должен ли сценарий ждать завершения программы, прежде чем перейти к следующему утверждению в вашем скрипте. Если установлено значение true, выполнение скрипта останавливается до завершения программы, а Run возвращает код ошибки, возвращаемый программой. Если установлено значение false (по умолчанию), метод запуска возвращается сразу после запуска программы, автоматически возвращается 0 (чтобы не интерпретироваться как код ошибки).

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

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

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

Работает без командного окна. Отлично! Сделано теми же людьми, что и CMDOW, но это более подходит.

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

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

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

Попробуйте запустить скрипт с помощью

Вы можете создать ярлык для командного файла, установить ярлык, чтобы начать свертывание (в свойствах ярлыка, вкладке «Ярлык»), а затем установить задание для запуска ярлыка.

Важно . Вам нужно указать путь к ярлыку вручную, введя его в поле «Запустить текст», в комплекте с расширением «.lnk»; если вы просто попытаетесь перейти к нему, перенаправит себя на все, на что указывает ярлык.

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

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

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

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

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

EDIT: Я пытался запустить задание ROBOCOPY и попробовал метод в этом ответе, и он не работал даже после редактирования прав доступа к сети. Я попытался дважды щелкнуть по сценарию и не смог заставить его работать, но мог заставить его работать только в командной строке с повышенными правами. Я создал ярлык для командного файла и запустил его как Администратор и смог его выполнить, дважды щелкнув по нему, но метод, с которым я закончил работу, заключался в том, чтобы скрыть его как SYSTEM (я знаю, я знаю) - но он работает с ROBOCOPY , для чего он стоит, если командный файл имеет правильные разрешения.

Просто фоновый режим (без окна), но без перенаправления в файл работает так.
start /b myprog.exe

Просто перенаправление вывода в файл, но без закрытия окна работает так.
cmd /c "myprog.exe > myfile.txt"
или
myprog.exe > myfile.txt
В любом из этих случаев .bat не заканчивает выполнения, а ждёт завершения этой команды (которая работать будет несколько часов) и не закрывает своё окно, которое зачет-то открыл.

Таким образом, для немедленного завершения .bat файла приходится использовать команду start, иначе никак. Однако команда
start /b myprog.exe > myfile.txt
будет делать не то, что нужно, так как поток перенаправится от команды start, а не от myprog.exe, как нужно.

Единственной возможностью остаётся вложить команду cmd в команду start так.
start /b cmd /c "myprog.exe > myfile.txt"
По описаниям в помощи это должно делать то, что нужно, однако почему-то окно всё равно не закрывается.

Вообще непонятно, зачем понадобилось открывать окно по умолчанию и создавать такие сложности, чтобы его специально закрыть. В OS Linux всё наоборот. По умолчанию окна нет, если оно нужно, то отдельной опцией это указывается. В OS Linux требуемое действие делается очень просто так.
myprog > myfile &

У каждой из этих двух команд есть преимущества и недостатки, но сделать то, что нужно не получается даже комбинируя их.

Ещё хочу заметить, что очень глупо открывать консольное окно при выполнении программы и не закрывать его, так как оно не всегда нужно. В моём случае закрытие окна вручную не приводит к завершению работы запущенной программы, а просто создаёт пользователю лишние трудности по закрыванию окна. Нужно избавить пользователя от ненужной работы.

Я уже долго мучался сам, советовался с друзьями, но никто не может помочь. Обращаюсь теперь к вам в надежде, что фирма Microsoft всё же лучше знает, как использовать возможности её командной строки для достижения нужного результата. Если ВЫ не поможете, больше обращаться мне не к кому. Это ВАШ программный продукт, всё что можно почерпнуть из помощи по этим командам, я прочитал, но там практически нет ничего нужного.

Помогите, пожалуйста, написать одну строку с командой, но правильно, чтобы она делала то, что нужно. Заранее спасибо.

home

злой_админ_который_живет_в_серверной - 16 декабря 2014 10:26 38115 Добрый день, коллеги! Недавно в нашей организации появилась новая программа, которую надо еженедельно обновлять примерно в 20-30 компах, а обновляется она путем примитивной замены exe файла более новым. Для автоматизации процесса я написал простенький bat'ник:
"xcopy /y \\server\data\prog.exe c:\data\"
Проблема в том, что мои некоторые юзеры пугаются черного окна, которая выскакивает при запуске винды, и закрывают его к чертям, что приводит к косякам в БД. Сколько ни объясни всем, рано или поздно кто-нибудь все равно накосячит. Поэтому, хочу написать так, чтоб злой cmd выполнялся в скрытом режиме, или хотя бы в свернутом виде дабы не пугать юзеров. Помогите, пожалуйста, решить эту проблему.

йопта, а прописать выполнение батника до входа юзера в систему низя?


в начале пишешь @echo off


@echo off да ты просто гениально сказал, конечно это не работает


а уменя работает


исходник в студию!


в начале пишешь @echo off

Попробуй Hidden Start


спасибо, но надо без сторонних программ


есть два способа

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\my.bat" & Chr(34), 0
Set WshShell = Nothing


да ты крут! зашибись, спасибо!

То же самое со свернутым окошком делпется при помощи создания ярлыка на твой баник и в его свойствах выставляешь запуск минимизированным.


ЦМД

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

Есть два способа выполнить это.

  • Запустите его из командной строки.
  • Создайте ярлык на рабочем столе и наведите его на файл bat. Обязательно измените свойства ярлыка на Начать сворачиваться .

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

Вот процедура, чтобы использовать это.

  • Введите «Task Scheduler» в поле Cortana, и вы должны увидеть приложение в списке. Вы также можете ввести «taskschd.msc» в командной строке, чтобы открыть его.
  • На последней панели справа найдите параметр, который гласит Создать базовое задание. Нажмите на него, чтобы открыть.
  • Это запускает мастера, который спросит вас
    • Наименование задачи с описанием
    • Когда вы хотите начать задание? Вы можете выбрать между Ежедневно, Еженедельно, Ежемесячно, OneTime, Когда компьютер запускается и так далее.
    • Далее выберите программу, и она предложит выбрать программу или сценарий, добавить аргументы, подробно начать и так далее.


    1] Скрытый старт или HStart


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

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

    Вы можете скачать здесь.

    2] SilentCMD

    Если вы знакомы с командной строкой, то есть набираете и используете командную строку, SilentCMD предлагает множество функций и выполняет нашу работу. Вы можете ввести SilentCMD [путь к файлу .bat] [аргументы], и он спокойно выполнит свою работу. Кроме того, вы можете войти в вывод и ошибки в текстовом файле.

    Вы можете скачать его с Github.

    Создайте исполняемый файл из пакетного скрипта

    Исполняемые файлы, вероятно, являются лучшим способом запуска командных файлов вместе с возможностью скрыть ваш скрипт от всех остальных. Существует много вариантов создания исполняемого файла из пакетного скрипта, а создание EXE-файла очень просто. Однако, если ваш антивирус его ловит, обязательно отметьте его как безопасный, поскольку вы используете его только для личного использования.

    • Как преобразовать BAT в EXE-файл
    • Вы можете создавать сценарии пакетных программ и компилировать их в файл .exe с помощью Batch Compiler.
    • Конвертировать VBS в EXE с помощью онлайн-инструмента или программного обеспечения для конвертации VBScript.

    Кстати, Slimm Bat To Exe Converter предлагает три типа режимов: экспресс, без окон и пользовательский. Вы можете скачать его с Softpedia.

    Читайте также: