Как запустить пакетный файл, минимизированный с помощью планировщика задач в Windows 8? -% comspec% метод больше не работает после Windows 7

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

С http://www.pcreview.co.uk/forums/running-bat-files-minimized-scheduler-t2125918.html:

"prequisite: все ваши командные файлы имеют команду exit, чтобы завершить действия. Если вы не выходите, вы закончите мигание командной строки.

Это то, что я продолжаю использовать:

%comspec% /c start /min "C:\Scripts\Destination_inbound_ftp5.bat"

Когда вы сохраните это в свойствах, вы получите следующий диалог с вопросом, хотите ли вы, чтобы все это было параметрами или нет. Ответ НЕТ, и задача будет сохранена, как и следовало ожидать.

Я также прочитал вопрос о переполнении стека "start% comspec%/c script.cmd" и "start cmd/C second.cmd script.cmd", что заставило меня заменить оператор "% comspec%" на "C:\Windows\system32\cmd.exe ", но это ничего не изменило.

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

Как это сделать в Windows 8 (64-разрядная версия)? Предпочтительно использовать командные команды старой школы вместо PowerShell (или, что еще хуже, p)

Ответ 1

Команде "Пуск" нужны ведущие "" кавычки", чтобы отключить функцию заголовка. Попробуйте сделать это:

%comspec% /c start "" /min "C:\Scripts\Destination_inbound_ftp5.bat"

Ответ 2

Предполагая, что Windows 8 будет такой же, как Windows 7, "выход" только выйдет из командного файла (что все равно будет делать).

Вам нужно добавить код выхода следующим образом:

В разделе "Программа/сценарий":

CMD (или command.exe или% comspec%)

В разделе "Аргументы:

/c start "Title" /min "C:\Scripts\Destination_inbound_ftp5.bat" ^& exit

Ответ 3

Другая возможность: небольшая бесплатная программа под названием CMDH, которая просто запускает запрошенные заказы в фоновом режиме. Например:

cmdh MyScript.cmd

Не нужно добавлять "exit" к скрипту. Протестировано, работая в Windows XP SP3, и нет причин, по которым он должен потерпеть неудачу в Windows 8.

Ответ 4

Мне не понравилось, что окно командной строки всплыло, а затем исчезло, поэтому вот еще одно решение из https://ss64.com/vb/run.html...

Сначала создайте invisible.vbs с этой единственной строкой текста:

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

Затем и, наконец, запустите ваш cmd или командный файл через:

%SystemRoot%\system32\wscript.exe "invisible.vbs" "myscript.cmd" //nologo

Та да! Сценарии такого рода давно встроены в Windows. Если вам интересно, сделайте веб-поиск для "WSH" (Windows scripting host). Вы даже можете писать такие скрипты на диалекте JavaScript под названием JScript.

Ответ 5

Здесь вы найдете решение https://ss64.com/vb/run.html, в котором будет запущен пакетный файл в свернутом окне. В отличие от других решений, которые используют команду start с /min, этот не будет вызывать новое окно на вашем экране, украсть фокус или прервать полноэкранные действия.

Сначала создайте файл с именем run_minimized.vbs с помощью этой единственной строки текста:

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 2, False

Затем создайте задачу Task Scheduler с помощью действия, чтобы запустить программу wscript.exe с этими аргументами:

"c:\path\run_minimized.vbs" "c:\path\my script.bat"

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

Нет простого способа передать аргументы из Планировщика заданий в пакетный файл, а также сохранить пробелы и кавычки, потому что wscript разделяет кавычки из своих аргументов. Простейшим способом обработки аргументов с пробелами было бы поместить всю команду командного файла в vbs:

CreateObject("Wscript.Shell").Run  """c:\path\my script.bat"" ""arg 1"" arg2", 2, False

Обратите внимание на использование кавычек. Там одна пары кавычек " заключая строку всей команды, и пару смежных кавычек "" каждое место вы бы использовать обычный знак кавычки в командной строке.