Подтвердить что ты не робот

Как свести к минимуму командную строку из моего файла bat

У меня есть этот файл bat, и я хочу свернуть окно cmd, когда я его запустил:

@echo off
cd /d C:\leads\ssh 
call C:\Ruby192\bin\setrbvars.bat
ruby C:\leads\ssh\put_leads.rb

В основном я хочу, чтобы окно командной строки было сведено к минимуму немедленно. Любые идеи о том, как это сделать?

4b9b3361

Ответ 1

Существует довольно интересный способ выполнить script сведенный к минимуму, заставив его перезапустить сам свернутый. Вот код, который нужно ввести в начало вашего script:

if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
... script logic here ...
exit

Как это работает

Когда выполняется script IS_MINIMIZED не определено (if not DEFINED IS_MINIMIZED), поэтому:

  • IS_MINIMIZED установлен на 1: set IS_MINIMIZED=1.
  • Script запускает свою копию с помощью команды start && start "" /min "%~dpnx0" %* где:

    • "" - пустой заголовок для окна.
    • /min - переключиться на выполнение с минимальными значениями.
    • "%~dpnx0" - полный путь к вашему script.
    • %* - прохождение всех параметров script.
  • Затем начальная script завершает свою работу: && exit.

Для исходной копии переменной script IS_MINIMIZED устанавливается исходная script, поэтому она просто пропускает выполнение первой строки и переходит непосредственно к логике script.

Примечания

  • Вам нужно зарезервировать некоторое имя переменной, чтобы использовать его как флаг.
  • script должен быть завершен с помощью exit, иначе окно cmd не будет закрыто после выполнения script.
  • Если ваш script не принимает аргументы, вы можете использовать аргумент как флаг вместо переменной:

    if "%1" == "" start "" /min "%~dpnx0" MY_FLAG && exit или короче if "%1" == "" start "" /min "%~f0" MY_FLAG && exit

Ответ 2

Используйте команду start, а переключатель /min запускается с минимальным значением. Например:

start /min C:\Ruby192\bin\setrbvars.bat

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

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

Ответ 3

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

Ответ 4

Если вы хотите запустить пакет для Win-Run/autostart, я нашел здесь приятное решение https://www.computerhope.com/issues/ch000932.htm и https://superuser.com/questions/364799/how-to-run-the-command-prompt-minimized

cmd.exe /c start /min myfile.bat ^& exit
  • требуется cmd.exe, так как start не является командой Windows, которая может выполняться вне пакета
  • /c= выход после завершения запуска
  • часть ^& exit гарантирует, что окно закрывается, даже если пакет не заканчивается на exit

Однако исходный cmd все еще не минимизирован.

Ответ 5

Используя PowerShell, вы можете свернуть тот же файл, не открывая новый экземпляр.

powershell -window minimized -command ""

Также -window hidden и -window normal можно полностью скрыть или восстановить.


источник: fooobar.com/questions/2420537/...

Ответ 6

Еще один бесплатный сторонний инструмент, способный минимизировать окно консоли в любое время (не только при запуске script), это Tcl с расширением TWAPI:

echo package require twapi;twapi::minimize_window [twapi::get_console_window] | tclkitsh -

здесь tclkitsh.exe находится в PATH и является одним из файлов tclkit-cli-*-twapi-*.exe, загружаемых из sourceforge.net/projects/twapi/files/Tcl двоичные файлы /Tclkits с TWAPI/. Я предпочитаю его гораздо легче min.exe, упомянутого в ответе Бернарда Чена, потому что я использую TWAPI для бесчисленных других целей уже.

Ответ 7

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

http://www.pcreview.co.uk/forums/command-prompt-tool-minimize-command-window-after-starts-t2037434.html

Ответ 8

Вы можете попробовать запустить script следующим образом

var WindowStyle_Hidden = 0
var objShell = WScript.CreateObject("WScript.Shell")
var result = objShell.Run("cmd.exe /c setrbvars.bat", WindowStyle_Hidden)

сохраните файл как filename.js

Ответ 9

Если вы введете этот текст в свой файл bat:

start /min blah.exe

Он сразу же свернется, как только откроет программу. Вы увидите только кратковременную вспышку, и она исчезнет.

Ответ 10

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

Вы можете запустить его как первое, что есть в вашем пакетном скрипте. Вот два таких инструмента:

min.exe http://www.paulsadowski.com/wsh/cmdprogs.htm

cmdowhttp://www.commandline.co.uk/cmdow/index.html

Ответ 11

Вы можете минимизировать командную строку во время прогона, но вам понадобятся два дополнительных скрипта: windowMode и getCmdPid.bat:

@echo off

call getCmdPid
call windowMode -pid %errorlevel% -mode minimized

cd /d C:\leads\ssh 
call C:\Ruby192\bin\setrbvars.bat
ruby C:\leads\ssh\put_leads.rb

Ответ 12

Другим вариантом, который отлично подходит для меня, является использование ConEmu, см. http://conemu.github.io/en/ConEmuArgs.html

"C:\Program Files\ConEmu\ConEmu64.exe" -min -run myfile.bat

Ответ 13

Одна из вещей, которые я ищу, - это запуск командного окна в минимизированном состоянии "все время" на конкретном сервере. Приведенные выше решения не будут работать для меня, поскольку исполняемая командная строка является частью другого приложения, которое будет запускать команду (поэтому все команды находятся в другом "родительском" приложении, в центральной базе данных).

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

Итак, допустим, команда выглядит примерно так:

"C:\applicationFolder\some_executabe.exe" -parameter1 config.file VAR1=$FIELD1 VAR2=$FIELDS2

Есть ли что-нибудь, что я мог бы добавить к этой команде? или иначе, моя цель состояла бы в том, чтобы любая командная строка работала в минимизированном состоянии "командных окон" по умолчанию для этого сервера.

В старые времена, да, у нас были PIF файлы, чтобы настроить его для конкретного пакетного файла, но я смотрел по умолчанию в командной строке и не мог видеть никакого контроля над состоянием окна (я могу контролировать только размер окна, цвет так далее)

любые советы по этому вопросу будут оценены

С наилучшими пожеланиями, HO

Ответ 14

Один из способов "минимизировать" окно cmd - уменьшить размер консоли, используя что-то вроде...

echo DO NOT CLOSE THIS WINDOW
MODE CON COLS=30 LINES=2

Вы можете уменьшить COLS до 18, а LINES до 1, если хотите. Преимущество заключается в том, что он работает под WinPE, 32-разрядным или 64-разрядным и не требует каких-либо сторонних утилит.